我有多个TextView
,每个{1}}共享一个OnLongClickListener
在onLongClick
事件中,我想确定哪个TextView
触发了该事件。
但是,该事件定义为:
public boolean onLongClick(View view)
我尝试将view
投射到TextView
,但这不起作用。
如何获取触发OnLongClick
事件的窗口小部件?
答案 0 :(得分:11)
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!" );
}
答案 1 :(得分:0)
使用view.getId()方法获取点击视图的ID。
答案 2 :(得分:0)
public boolean onLongClick(View v) {
switch(v.getId()) {
case R.id.first_text_view: // do things here; break;
...
}
return true;
}
答案 3 :(得分:0)
TextView
已经一个View
,所有小部件都从View
延伸,所以您需要的只是{{1}上的切换像你这样的TextViews:
id
答案 4 :(得分:0)
你得到的错误是什么?通常这应该工作。如果您设置了yourTextView.setOnLongClickListener(this)
,那么public boolean onLongClick(View view)
将会触发,您无需进行投射。