使用BuiltInZoomControls的WebView抛出异常并崩溃

时间:2012-08-09 18:17:59

标签: android android-webview

我正在使用启用了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);

知道可能是什么问题。需要帮助。

由于

4 个答案:

答案 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);