2012-02-17 7 views
1

私のログには、onTouch(View、MotionEvent)が呼び出されないことが誰に示されているのですか? onTouchEvent(MotionEventイベント)が呼び出されているのがわかります。どちらもView.OnTouchEventを実装するActivityでオーバーライドされます。Android onTouch(View、MotionEvent)は呼び出されていませんが、onTouchEvent(MotionEventイベント)が呼び出されていますか?

+1

アクティビティでonTouch()およびonTouchEvent()をオーバーライドする理由は何ですか?アクティビティでsetOnTouchListener()を使用するべきではありませんか? –

答えて

2

AFAIK、アクティビティはonTouch(..)を定義しませんが、onTouchEvent(..)を定義します。だからあなたは後者を上書きしていますが、前者を定義するだけです。

また、onTouchEvent(..)は最後のタッチハンドラです - ビューがそれを処理しない場合にのみ、それが呼び出されます:

onTouchEvent(MotionEvent event) 
Called when a touch screen event was not handled by any of the views under it. 
+0

私は活動を変更するためにスワイプをしようとしています。だから、私が持っているものを使う唯一の方法はView view = findViewById(R.id.startButtonLayout)です。 view.setOnTouchListener(this); – PointsToPonder

0

onTouchウルactivity.noでこの使用のようandroid.some事に使用することができます

 ed.setOnTouchListener(new OnTouchListener() { 

      public boolean onTouch(View v, MotionEvent event) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getApplicationContext(), "hai", Toast.LENGTH_LONG).show(); 
       return false; 
      } 
     }); 
+0

これはまた、うまくいくように見えます。ありがとう – PointsToPonder

+0

falseを返すとイベントを消費しないように指示するので、これはうまくいきません! –

4

onTouch()をオーバーライドする必要がViewをタッチしたときに呼び出されますが、Activity(画面)をタッチしたときonTouchEvent()が呼び出されます。

onTouch()の戻り値がtrueの場合、タッチイベントはonTouch()で、それ以外の場合はonTouchEvent()にイベントが送信されます。

希望すると便利です。

関連する問題