代码非常简单。没什么了不起的,我只是想吐槽一条消息,出于某种原因,两种情况下的行为是不同的。
案例 1:这是可行的:
代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.webopen);
TextView sometext = (TextView)findViewById(R.id.click);
sometext.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(getApplicationContext(), "Long click Working", Toast.LENGTH_LONG).show();
return false;
}
});
}
案例 2:不工作!我想知道它不起作用的原因
public class OnClick extends Activity implements OnLongClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webopen);
TextView sometext = (TextView) findViewById(R.id.click);
}
@Override
public boolean onLongClick(View v) {
switch (v.getId()) {
case R.id.click:
Toast.makeText(getApplicationContext(), "Long click enabled",
Toast.LENGTH_LONG).show();
// OR
// Something();
break;
default:
break;
}
return false;
}
public boolean Something() {
Toast.makeText(getApplicationContext(), "Long click enabled",
Toast.LENGTH_LONG).show();
return true;
}
}
代码没有什么特别之处,但我只想知道 onLongClickListener 不工作的原因。
任何建议都会有所帮助..:)
最佳答案
您没有为 someText
设置 onLongClickListener
。你需要添加这个:
someText.setOnLongClickListener(this);
此行会将监听器对象附加到 TextView
对象。在第一种情况下,您调用 setOnLongClickListener
,这就是它起作用的原因。在本例中,您正在创建一个新的onLongClickListener
对象内联。
在第二个示例中,您的 Activity
继承了 OnLongClickListener
,这使其成为该对象的一个实例。因此,要为 someText
设置监听器,请传递监听器 this
,它是对当前类的引用。
关于android - OnLongClickListener 没有正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835586/