2012-02-17 27 views
1

有誰知道我的日誌爲什麼表明onTouch(View,MotionEvent)沒有被調用。我可以看到正在調用onTouchEvent(MotionEvent事件)。在實現View.OnTouchEvent的Activity中都被覆蓋。未調用Android onTouch(View,MotionEvent),但調用了onTouchEvent(MotionEvent事件)?

+1

爲什麼在Activity上重寫onTouch()和onTouchEvent()?它不應該在你的Activity中使用setOnTouchListener()嗎? – 2012-02-17 06:32:49

回答

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 2012-02-17 06:46:20

0

onTouch可以android.some事情可以使用像烏爾activity.no這種使用需要重寫

 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 2012-02-17 06:48:37

+0

這可能不起作用,因爲返回false告訴不要消耗事件! – 2016-02-04 16:19:39

4

onTouch()View被觸摸被調用,但是當Activity(屏幕)被觸摸onTouchEvent()被調用。

當返回值爲onTouch()爲真時,觸摸事件將由onTouch()包含,否則該事件將被傳遞到onTouchEvent()

希望它對你有用。

相關問題