2012-08-02 36 views
2

我有一个更长的pressed pressed状态按钮的运动类。它工作得很好!android:Activity使用OnTouchListener()启动2次

但是,有没有人知道为什么在这个代码块我的活动开始2次?当我按下后退按钮时,我必须做2次。

Thx任何帮助!


这是我的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() 

回答

2

如果动作为DOWN,则只应激活它;在此之后可能会有一个MOVEUP的操作,这会再次激活它。

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() 
+0

我现在得到一个未捕获的异常错误,whats错误其他? thx很多4帮助! – synthesis 2012-08-02 17:54:51

+0

您可以将完整的LogCat放在pastebin上并将其链接到此处吗? – Eric 2012-08-02 17:57:20

+0

我有一个文本文件 – synthesis 2012-08-02 18:00:43

0

我认为它被称为两个onKeyUp()onKeyDown() - 这些都是你应该覆盖的方法,而不是onTouch()

编辑:

我没有仔细阅读不够 - 你长点击后的时候,我起初并不明白这一点。我曾经收到类似问题的很好回答。看看:How to access menu button on long click

+0

不,这是不正确的。这是一个正常的onTouch情况,运动类为更长的状态,但不是按(点击) – synthesis 2012-08-02 18:09:24

0

你应该处理ACTION_DOWN事件。

if (event.getAction() == MotionEvent.ACTION_DOWN){ 

// Do Something 
} 
return true;