安卓:如何将“view”转换为“textview”?

3

我有几个TextView,它们共享一个OnLongClickListener

onLongClick事件中,我想要确定哪个TextView触发了该事件。

然而,该事件被定义为:

public boolean onLongClick(View view) 

我尝试将view转换为TextView,但没有成功。

我该如何获取触发OnLongClick事件的小部件?


view 强制转换为 TextView 为什么不起作用?你是否尝试先检查 if (view instanceof TextView) 确保它没有从错误的视图触发? - Till Helge
我尝试将视图转换为TextView,但没有成功。如果你遇到了任何错误,请分享错误日志。否则,请分享onLongClick()的代码。 - Shailendra Singh Rajawat
5个回答

15

View应该是你的TextView。

尝试像这样:

if( view instanceof TextView ) {
  TextView textView = (TextView) view;
  //Do your stuff
}

为了验证上述if语句的有效性,您可以首先尝试像这样运行它:

if( view instanceof TextView ) {
  Log.e( "MyTag", "It's a TextView!" );
}

0

你遇到了什么错误?通常这应该可以工作。如果你设置了 yourTextView.setOnLongClickListener(this),然后 public boolean onLongClick(View view) 将会触发,你就不需要进行强制转换了。


0
使用view.getId()方法获取被点击视图的ID。

0
public boolean onLongClick(View v) {
        switch(v.getId()) {
            case R.id.first_text_view: // do things here; break;
                ...
        }
        return true;
    }

0

TextView已经是一个View,所有小部件都从View继承,所以你所需要做的就是在你的TextView的id上进行切换,像这样:

public boolean onLongClick(View v) {
        switch(v.getId()) {
            case R.id.txt1: // your code for the textView which have the id R.id.txt1  ...;
                     break;
            case R.id.txt2: // your code for the textView which have the id R.id.txt2  ...; 
                    break;
                //... etc
        }
        return true;
    }

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