2

我试图覆盖默认的 WebChromeClient 以便让我的应用程序的 WebView 能够打开新窗口。为此,按照手册中的说明,我将覆盖 WebChromeClient 的“onCreateWindow”方法,其中我执行以下简单逻辑。

    public boolean onCreateWindow (WebView view, boolean dialog, boolean userGesture, Message resultMsg) {

        ((WebView.WebViewTransport) resultMsg.obj).setWebView(myWebView);
        Log.d("webviewdemo", "from the chrome client");
        resultMsg.sendToTarget(); 
        return true;
    }

但这会导致上述分段错误。我做了一些搜索,发现它已经在http://code.google.com/p/android/issues/detail?id=11655报告了。之后我看不到该问题的任何更新。有人知道相同的状态吗?

谢谢,阿肖克。

4

1 回答 1

6

如果您在 onCreateWindow 中重复使用 web 视图,应用程序会崩溃。

代替 webview,在屏幕布局中使用 ViewGroup,给它相同的布局参数(位置、大小等),就像你给 webview (mWebViewPopup) 一样。

    @Override
    public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, android.os.Message resultMsg)
    {
        contentContainer.removeAllViews();

        WebView childView = new WebView(mContext);
        childView.getSettings().setJavaScriptEnabled(true);
        childView.setWebChromeClient(this);
        childView.setWebViewClient(new WebViewClient());
        childView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        contentContainer.addView(childView);
        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(childView);
        resultMsg.sendToTarget();
        return true;
    }

在上面的代码中

1)我已经设置了布局参数,以便我的 web 视图填充父级,您应该根据您的要求使用布局参数。2) mContext => 上下文对象 3) contentContainer => viewgroup 在 XML 中声明,旨在包含 Web 视图

这不干净,但解决了问题。

于 2012-01-12T01:20:29.100 回答