我正在使用启用了BuiltInZoomControls的WebView。我可以正确查看WebView中的数据,也可以使用缩放控件进行缩放。但当我点击返回到前一个屏幕时,我得到异常和应用程序崩溃。 (如果我不使用缩放控件,它可以正常工作。我的意思是在WebView中启用缩放控件,但我没有使用过,只是查看了WebView内容并点击了。)
web视图:
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setSupportZoom(true);
mWebView.getSettings().setPluginState(PluginState.ON);
例外:
Activity com.web.ui.DetailActivity has leaked window android.widget.ZoomButtonsController$Container@4110c4e0 that was originally added here
.....
FATAL EXCEPTION: main
E/AndroidRuntime(670): java.lang.IllegalArgumentException: Receiver not registered: android.widget.ZoomButtonsController$1@4110c2d0
....
而onDestroy of Activity我也想补充一下:
mWebView.getSettings().setBuiltInZoomControls(false);
知道可能是什么问题。需要帮助。
由于
答案 0 :(得分:13)
将此添加到您的活动中:
@Override
public void finish() {
ViewGroup view = (ViewGroup) getWindow().getDecorView();
view.removeAllViews();
super.finish();
}
答案 1 :(得分:3)
确保你
setVisible(false);
在调用super或在webView对象上调用destroy()之前,在onDestroy()
中。
答案 2 :(得分:1)
我有同样的问题,并尝试了给出的解决方案,但我一直得到例外。 唯一对我有用的代码是
public void onDetachedFromWindow(){
super.onDetachedFromWindow();
setVisible(false);
}
但是,我仍然不明白为什么setVisible(false);
无法在onDestroy()
中工作。如果有人知道解释,我会非常感谢你,如果你可以发表/评论它。
答案 3 :(得分:0)
我遇到了同样的问题。我通过在三秒钟之后调用WebView.destroy()来修复它(直到缩放控制的动画完成)
@Override
protected void onDestroy() {
mWebView.postDelayed(new Runnable() {
@Override
public void run() {
try {
mWebView.destroy();
} catch (Exception ex) {
}
}
}, 3000);