Android,在OnClick中如何获取TextView的文本

6

我有一些 TextView,每个都有一个 OnClickListener。在这个方法中,我想获取有关 TextView 的信息。

TextView tv2 = new TextView(this,(String)book.get(i),this);
tv2.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        Intent intent = new Intent(Contact.this,Discution.class);
        //String str = this.getText(); //like this
        startActivity(intent);
    }
});

如何在 OnClickListener 中使用 this.getText();


将tv2设置为final,并在onClick()中访问它的值,如tv2.getText().toString(); - Anuj
TextView tv2 = new TextView(this,(String)book.get(i),this); 是错误的。TextView 没有这样的构造函数。 - Raghunandan
你有一个带有TextViews的列表视图吗?需要更多信息。但是你现在所做的是错误的。 - Raghunandan
你有名为 TextView 的自定义类吗? - Raghunandan
5个回答

10

这是错误的

TextView tv2 = new TextView(this,(String)book.get(i),this);

你需要将TextView声明为final,并且构造方法应该匹配以下任何一种

TextView(Context context)
TextView(Context context, AttributeSet attrs)
TextView(Context context, AttributeSet attrs, int defStyle)

应该是这样的

final TextView tv2 = new TextView(this);

你没有使用上面提到的任何内容。完全错误。

然后在 onClick 内部

String str = tv2.getText().toString();  

它被声明为 final 是因为你在匿名内部类中访问了 tv2。

http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html#accessing

你还可以使用 View v

TextView tv = (TextView) v;
String str = tv.getText().toString();  

5
tv2.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
    Intent intent = new Intent(Contact.this,Discution.class);

            String str = tv2.getText().toString(); 

            startActivity(intent);
}

TextView的构造函数与文档中的不匹配。请参考http://developer.android.com/reference/android/widget/TextView.html。 - Raghunandan
1
我不明白为什么这个能够工作并被接受? - Raghunandan
我的重点是如何从TextView中获取不在该行的文本。 - Sagar Maiyad
但那完全是错误的。它根本不应该运行,应该抛出一个运行时异常。这是错误的建议。 - Raghunandan
让他改那一行代码。 - Sagar Maiyad
我在他的帖子下评论了,但从未得到回复。不管怎样,在我的帖子中提出了建议,这就是为什么我感到惊讶这被接受了的原因。 - Raghunandan

2
只需使用tv2代替this

0

使用这个

tv2.getText().toString;


0
假设您的布局中有以下内容:
<TextView android:id           ="@+id/myText"
          android:layout_width ="wrap_content"
          android:layout_height="wrap_content"
          android:textSize     ="26dp"
          android:text         ="bla bla bla..."
          android:textColor    ="#0000ff"
          android:clickable    ="true"
          android:onClick      ="onMyClick"/>

现在让我们来获取当myText元素被点击时的文本内容。
public void onMyClick(View v)
     {
     TextView t=(TextView)v;
     String s=t.getText().toString();
     //do whatever you want with the string s
     }

请注意布局元素上的布尔值android:clickable="true" [它是强制性的],该内容涉及编程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接