【发布时间】:2016-06-02 09:28:48
【问题描述】:
我有一个片段 ViewPager,每个片段内部都有一个 WebView,在 XML 中定义。
我正在将资产中的 HTML 文件读入字符串(我必须替换某些内容),然后将字符串加载到 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()。
有什么建议可以避免这个错误吗?
【问题讨论】:
-
您正在使用片段查看器,也许片段正在被销毁?
-
是的,可能是这样,但是系统不应该在浏览网页后负责清理吗?
标签: android android-fragments webview