Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android:活动从OnTouchListener()开始2次_Android - Fatal编程技术网

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情况,运动类用于更长的状态,但不能按(单击)