滚动多个WebView时的onTouch异常

时间:2012-11-30 17:29:02

标签: android android-webview ontouchevent

我有一个应用程序,它使用多个WebView s彼此相邻来显示内容。当一个垂直滚动时,我在第一个完全停止之前滚动另一个,我得到一个带有下面堆栈跟踪的异常。堆栈中的第一行对我来说是最令人费解的。我不知道VelocityTracker是什么,或者其他任何变量引用的是什么。

11-30 10:47:04.740: E/webview(2199): Got null mVelocityTracker when mPreventDefault = 0 mDeferTouchProcess = false mTouchMode = 3
11-30 10:50:23.771: D/AndroidRuntime(2199): Shutting down VM
11-30 10:50:23.771: W/dalvikvm(2199): threadid=1: thread exiting with uncaught exception (group=0x40015560)
11-30 10:50:23.795: E/AndroidRuntime(2199): FATAL EXCEPTION: main
11-30 10:50:23.795: E/AndroidRuntime(2199): java.lang.NullPointerException
11-30 10:50:23.795: E/AndroidRuntime(2199):     at android.webkit.WebView.onTouchEvent(WebView.java:5283)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at android.view.View.dispatchTouchEvent(View.java:3885)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1702)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1125)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at android.app.Activity.dispatchTouchEvent(Activity.java:2132)
11-30 10:50:23.795: E/AndroidRuntime(2199):     at
...

我使用的是子类WebView,但我没有覆盖onTouchEvent()方法。

有趣的是,我只在我使用的OS v2.3设备以及任何OS v2.x模拟器上发现此错误。无论何时我在4.x设备上进行测试,一切都很好,所有WebView都可以同时处理触摸和滚动。

发生了什么事?这是Android中的已知错误吗?我找不到类似情况的记录。有关解决方法的任何建议吗?我可以阻止其他WebView被触摸,只要其中一个滚动,但这看起来很荒谬。

1 个答案:

答案 0 :(得分:0)

我发现了我是如何导致这个问题的,但不是真正的问题。

我偶然发现了this link,当WebView未传递所有onTouch事件时,该问题描述了一个问题。我设置了onTouchListener WebView来处理第一个onTouch事件,返回true但后来通过返回false传递了后续事件。

显然,某些版本的操作系统在无法处理所有onTouch事件时会搞砸。