0

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

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
...

我正在使用 sub-classed WebView,但我没有覆盖该onTouchEvent()方法。

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

到底是怎么回事?这是Android中的已知错误吗?我找不到任何类似情况的记录。任何解决方法的建议?只要其中一个正在滚动,我就可以防止其他WebViews 被触摸,但这似乎很荒谬。

4

1 回答 1

0

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

我偶然发现了这个链接,它描述了当 aWebView没有传递所有onTouch事件时的问题。我的 s 有一个onTouchListener集合,WebView它通过返回处理第一个onTouch事件,true然后通过返回传递后续事件false

显然,当某些版本的操作系统无法处理所有onTouch事件时,它们就会变得一团糟。

于 2012-12-04T16:00:36.073 回答