android:活动从OnTouchListener()开始2次
我有一个动作类的长按状态按钮。它真的很好用 但是有人知道为什么在这个代码块中,我的活动开始了两次吗?当我按下后退按钮时,我必须这样做两次 谢谢你的帮助android:活动从OnTouchListener()开始2次,android,Android,我有一个动作类的长按状态按钮。它真的很好用 但是有人知道为什么在这个代码块中,我的活动开始了两次吗?当我按下后退按钮时,我必须这样做两次 谢谢你的帮助 这是我的java代码: Button MenuBtnStart; final Handler handlerBtnStart = new Handler(); MenuBtnStart.setOnTouchListener(new OnTouchListener() { public
这是我的java代码:
Button MenuBtnStart;
final Handler handlerBtnStart = new Handler();
MenuBtnStart.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(final View v, MotionEvent event) {
MenuBtnStart.setBackgroundDrawable(getResources().getDrawable(R.drawable.hover));
v.setPressed(true);
handlerBtnStart.postDelayed(new Runnable() {
public void run() {
Intent myIntent = new Intent(TextActivity.this, NextActivity.class);
TextActivity.this.startActivity(myIntent);
v.setPressed(false);
}
}, 900); // end of Handler new Runnable()
return true;
}
}); // end of OnTouchListener()
我认为它同时在
onKeyUp()
和onKeyDown()
上被调用-这些是您应该覆盖的方法,而不是onTouch()
编辑:
Button MenuBtnStart;
final Handler handlerBtnStart = new Handler();
MenuBtnStart.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(final View v, MotionEvent event) {
MenuBtnStart.setBackgroundDrawable(getResources().getDrawable(R.drawable.hover));
v.setPressed(true);
handlerBtnStart.postDelayed(new Runnable() {
public void run() {
Intent myIntent = new Intent(TextActivity.this, NextActivity.class);
TextActivity.this.startActivity(myIntent);
v.setPressed(false);
}
}, 900); // end of Handler new Runnable()
return true;
}
}); // end of OnTouchListener()
我读得不够仔细-你在长时间点击后,我一开始没有理解。我曾经收到一个类似问题的很好的答案。看一看:。只有当操作被激活时,您才应该激活它;在此之后可能会有一个或操作,这将再次激活它
final Handler handlerBtnStart = new Handler();
MenuBtnStart.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(final View v, MotionEvent event) {
int action = event.getAction() & MotionEvent.ACTION_MASK;
if (action == MotionEvent.ACTION_DOWN) {
MenuBtnStart.setBackgroundDrawable(getResources().getDrawable(R.drawable.hover));
v.setPressed(true);
handlerBtnStart.postDelayed(new Runnable() {
public void run() {
Intent myIntent = new Intent(ThisActivity.this, NextActivity.class);
ThisActivity.this.startActivity(myIntent);
v.setPressed(false);
}
}, 900); // end of Handler new Runnable()
return true;
}
return false;
}
}); // end of OnTouchListener()
你应该处理动作停止事件
if (event.getAction() == MotionEvent.ACTION_DOWN){
// Do Something
}
return true;
我现在得到一个未捕获的异常错误,还有什么问题吗?谢谢你的帮助!你能把完整的LogCat放在pastebin上并链接到这里吗?这个错误不是由这个代码引起的。您应该关闭此问题(通过接受答案),并使用.oneclickahead.WorldQuizzer.GameActivity中的
以及这些日志中的代码启动一个新线程。错误是,操作参数设置为DOWN,但应该设置为setup,然后才有效。不,这是不正确的。这是一种正常的onTouch情况,运动类用于更长的状态,但不能按(单击)