在我的代码中,按钮的ontouch侦听器会被触发两次。 请在下面找到代码。我使用的是Google API 2.2。
java文件中的代码....
submit_button = (Button)findViewById(R.id.submit);
submit_button .setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View arg0, MotionEvent arg1) {
int action=0;
if(action == MotionEvent.ACTION_DOWN)
{
startActivity(new Intent(First_Activity.this, Second_Activity.class));
finish();
}
return true;
}
});
请帮我解决这个问题。
答案 0 :(得分:14)
它发射两次,因为有一个向下事件和一个向上事件。
if分支中的代码总是执行,因为action设置为0(顺便说一下,它是MotionEvent.ACTION_DOWN的值)。
int action=0;
if(action == MotionEvent.ACTION_DOWN)
也许您打算编写以下代码?
if(arg1.getAction() == MotionEvent.ACTION_DOWN)
但是你应该像Waqas建议的那样使用OnClickListener。
答案 1 :(得分:7)
而不是使用 onTouchListener ,您应该使用 onClickListener 作为按钮。
submit_button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(First_Activity.this, Second_Activity.class));
finish();
}
});
答案 2 :(得分:0)
您是否将侦听器两者附加到视图元素?在对事件做出反应之前,请使用View arg0
参数检查来自哪个视图。
答案 3 :(得分:0)
int action = event.getActionMasked();
使用此功能。