我有几个TextView
,它们共享一个OnLongClickListener
在onLongClick
事件中,我想要确定哪个TextView
触发了该事件。
然而,该事件被定义为:
public boolean onLongClick(View view)
我尝试将view
转换为TextView
,但没有成功。
我该如何获取触发OnLongClick
事件的小部件?
我有几个TextView
,它们共享一个OnLongClickListener
在onLongClick
事件中,我想要确定哪个TextView
触发了该事件。
然而,该事件被定义为:
public boolean onLongClick(View view)
我尝试将view
转换为TextView
,但没有成功。
我该如何获取触发OnLongClick
事件的小部件?
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!" );
}
你遇到了什么错误?通常这应该可以工作。如果你设置了 yourTextView.setOnLongClickListener(this)
,然后 public boolean onLongClick(View view)
将会触发,你就不需要进行强制转换了。
public boolean onLongClick(View v) {
switch(v.getId()) {
case R.id.first_text_view: // do things here; break;
...
}
return true;
}
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;
}
view
强制转换为TextView
为什么不起作用?你是否尝试先检查if (view instanceof TextView)
确保它没有从错误的视图触发? - Till Helge