android - 在Android中,当重写触摸事件时,为什么需要调用super.onTouchEvent(event)?

标签 android touch-event gestures

http://www.techotopia.com/index.php/Detecting_Common_Gestures_using_the_Android_Gesture_Detector_Class 的教程中作者包含对 super.onTouchEvent(event) 的调用,并提醒不要忘记它:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
   this.gDetector.onTouchEvent(event);
   // Be sure to call the superclass implementation
   return super.onTouchEvent(event);
}

我试图弄清楚为什么这是必要的。在该教程的示例中,我删除了对父类(super class)的调用,只是返回了 this.gDetector.onTouchEvent(event),结果没有看到任何变化。

最佳答案

来自 Android 源 ( Activity.java ):

public boolean onTouchEvent(MotionEvent event) {
  if (mWindow.shouldCloseOnTouch(this, event)) {
    finish();
    return true;
  }
  return false;
}

如果您重写此方法并且不调用 super.onTouchEvent(event),则该代码将不会被执行。大多数时候,您不希望这种情况发生,即使它似乎没有任何明显的效果。

关于android - 在Android中,当重写触摸事件时,为什么需要调用super.onTouchEvent(event)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26575651/

相关文章:

iphone - iOS 在 iPad 上触摸(自动)偏移

android - 使用 viewpager 和抽屉导航从左向右滑动

android - 用手势在 EditText 中书写

ios - Erica Saduns iPhone Developers Cookbook (3.0) 第 8 章,练习 14 — 调整大小和旋转

android - 如何正确管理android中的 fragment ?

Android EditText 和大量文本

Android:findviewbyid:当 View 不在 setContentView 调用的同一布局上时,按 id 查找 View

android - 展开时 CollapsingToolbarLayout 底部的菜单项

java - 我似乎无法识别 Android 上的触摸事件

android - 在 Android 应用程序中实现手势识别