我有一个应用程序,它使用多个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
被触摸,只要其中一个滚动,但这看起来很荒谬。
答案 0 :(得分:0)
我发现了我是如何导致这个问题的,但不是真正的问题。
我偶然发现了this link,当WebView
未传递所有onTouch
事件时,该问题描述了一个问题。我设置了onTouchListener
WebView
来处理第一个onTouch
事件,返回true
但后来通过返回false
传递了后续事件。
显然,某些版本的操作系统在无法处理所有onTouch
事件时会搞砸。