2

私は、より長いpressed_stateボタンのモーションクラスを持っています。それは本当にうまくいきます!

しかし、このコード ブロックで私のアクティビティが 2 回開始される理由を知っている人はいますか? 戻るボタンを押すときは、これを 2 回行う必要があります。

助けてくれてありがとう!


これは私の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()
4

3 に答える 3

3

DOWNアクションが;の場合にのみアクティブ化する必要があります。MOVEこの後にまたはUPアクションが発生する可能性があります。これにより、2回目にアクティブになります。

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()
于 2012-08-02T17:34:02.550 に答える
0

ACTION_DOWN イベントを処理する必要があります。

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

// Do Something
}
return true;
于 2012-08-02T18:03:14.530 に答える
0

onKeyUp()と- の両方で呼び出されていると思いますonKeyDown()が、これらはオーバーライドする必要があるメソッドであり、 ではありませんonTouch()

編集:

私は十分に注意深く読んでいませんでした - あなたは長いクリックの後だったのです。私はかつて、同様の質問に対して素晴らしい答えを受け取りました。見てみましょう:ロングクリックでメニューボタンにアクセスする方法

于 2012-08-02T17:33:22.040 に答える