代码很简单..太好了,我只是尝试举起一条消息,由于某种原因,两种情况下的行为是不同的。
情况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无法正常工作的原因。
任何建议都会有所帮助.. :)
最佳答案
您没有为onLongClickListener
设置someText
。您需要添加以下内容:
someText.setOnLongClickListener(this);
此行会将侦听器对象附加到
TextView
对象。在第一种情况下,您要调用setOnLongClickListener
,这就是它起作用的原因。在这种情况下,您将在线创建一个新的onLongClickListener
对象。在第二个示例中,您的
Activity
继承了OnLongClickListener
,这使其成为该对象的实例。因此,要为someText
设置侦听器,请传递侦听器this
,该侦听器是对当前类的引用。