Android-未知的webview崩溃原因

时间:2011-11-30 18:07:48

标签: android webview nullpointerexception

我有一个类,它是自己的活动,基本上我用来托管webview。它在大多数设备上工作正常,但在motorolla droid bionic上,它在加载页面时偶尔会出现这个错误。

java.lang.NullPointerException
at android.webkit.WebView.sendOurVisibleRect(WebView.java:2384)
at android.webkit.WebView.onScrollChanged(WebView.java:4820)
at android.view.View.scrollTo(View.java:5016)
at android.webkit.WebView.onOverScrolled(WebView.java:2603) 
at android.view.View.overScrollBy(View.java:8890)
at android.webkit.WebView.computeScroll(WebView.java:3004)
at android.view.ViewGroup.drawChild(ViewGroup.java:1562)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2106)
at android.view.ViewRoot.draw(ViewRoot.java:1562)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1298)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1911)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3821)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)

在使用调试器进行故障排除后,我无法理解null指针来自哪里.....任何人在droid仿生上都有类似的问题?或其他设备。

2 个答案:

答案 0 :(得分:2)

您需要在调用destroy

之前从布局中删除WebView
  

销毁WebView的内部状态。从视图系统中删除WebView后,应调用此方法。在销毁之后,WebView上不会调用其他任何方法。

答案 1 :(得分:1)

这个问题很古老,但我刚遇到同样的例外;我认为分享我的结论会很有帮助。

我有这个Activity,有一个非常简单的Layout - 活动内容视图是WebView的单个实例。

它设置如下:

onStart()
{
    this.setContentView(this.browser);
}

并且,我在我的Activity的onStop方法中有这个:

onStop()
{
    this.browser.destroy()
}

我的应用程序逻辑的设计方式是这个活动必须多次启动和停止......所以......第一次启动和停止时,一切都很顺利......但是在第二次执行之后onStart“我有例外。

所以,我删除了对“this.browser.destroy()”的调用,一切正常......我想这会杀死我的对象,因此我引用了null ...

所以,如果你得到这个,你就会失去对布局中某些视图的有效引用......只需检查你的代码并尝试查找它在哪里“null-ed”。 / p>