我有一个片段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()
。
有什么建议我可以避免这个错误吗?
答案 0 :(得分:0)
尝试将此代码放入片段的onDestroy()方法
protected void onDestroy()
{
yourwebViewPlaceholder.removeView(yourWebView);
yourWebView.removeAllViews();
yourWebView.destroy();
}
如果这适合您,请告诉我! :)