WebView自行销毁

时间:2016-06-02 09:28:48

标签: android android-fragments webview

我有一个片段ViewPager,每个片段里面都是一个WebView,在XML中定义。

我正在将资源中的HTML文件读入字符串(我必须替换某些内容),然后将String加载到WebWiew中。 它工作正常,WebView显示正确的内容。

这是我的代码:

webWiew.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    // show webview when page has fully loaded
                    view.setVisibility(View.VISIBLE);
                }
            });


webWidget.getSettings().setJavaScriptEnabled(true);
String html = Helper.getHtmlAsString(getContext());
if (html != null) {
     html = html.replace(PLACEHOLDER, String.valueOf(pageId));
     webWidget.loadDataWithBaseURL(HTML_WIDGET_PATH, html, "text/html", "utf-8", null);
}

但是当在页面之间滚动时,我收到以下错误(请注意,WebView仍然显示内容):

D/webviewglue: nativeDestroy view: 0x1d8b9d0
D/webview: webview.destroy() is called.
D/webview: java.lang.Throwable: webview.destroy() callstack
                                at android.webkit.WebView.destroy(WebView.java:2449)
                                at android.webkit.WebView$10.run(WebView.java:5335)
                                at android.os.Handler.handleCallback(Handler.java:605)
                                at android.os.Handler.dispatchMessage(Handler.java:92)
                                at android.os.Looper.loop(Looper.java:137)
                                at android.app.ActivityThread.main(ActivityThread.java:4507)
                                at java.lang.reflect.Method.invokeNative(Native Method)
                                at java.lang.reflect.Method.invoke(Method.java:511)
                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
                                at dalvik.system.NativeStart.main(Native Method)

我没有在任何地方销毁WebView,我绝对不会打电话给webview.destroy()

有什么建议我可以避免这个错误吗?

1 个答案:

答案 0 :(得分:0)

尝试将此代码放入片段的onDestroy()方法

protected void onDestroy()
{
yourwebViewPlaceholder.removeView(yourWebView);
yourWebView.removeAllViews();
yourWebView.destroy();
}

如果这适合您,请告诉我! :)