2012-03-01 9 views
1

私はwebviewサービスで自分のアプリケーションを構築していて、別のウィンドウ(デフォルトのシステムブラウザでも同じWebビューでもない)で新しいURLを開こうとしています。私は、私も間違いなく真に私ののWebView setSupportMultipleWindowsを持っていたなぜAndroid WebChromeClientのonCreateWindowメソッドが呼び出されなかったのですか?

public class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading (WebView view, String url) { 
     view.loadUrl(url);   
     return true; 
    } 
} 

public class MyWebChromeClient extends WebChromeClient { 
    @Override 
    public boolean onCreateWindow (WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { 
     WebView childView = new WebView(view.getContext()); 
     final WebSettings settings = childView.getSettings(); 
     settings.setJavaScriptEnabled(true); 
     childView.setWebChromeClient(this); 
     childView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
     WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; 
     transport.setWebView(childView); 
     resultMsg.sendToTarget(); 
     Log.d(LOG_TAG, "onCreateWindow"); // never log 
     return true; 
    } 
} 

、以下のように自分のWebViewClientとWebChromeClientを設定します。
しかし、onCreateWindowは呼び出されませんでした。私が逃したものはありますか?
ありがとうございます。

+1

あなたのonCreate()メソッドはどのように見えますか? –

+0

私は別のWebビューで新しいURLをロードしたいだけです。正直言って、どこかにコピーしました – fifth

+0

こんにちは@fifth同じ解決方法はありましたか? –

答えて

0

OnCreateWindow()が呼び出されていない理由をフルコードなしで説明するのは難しいです。あなたのアクティビティOnCreate()メソッドには、次のようなコードがありますか?あなたはOnCreateWindow()が呼ばれるべきだと思うれる

// Get the main web viewer 
    mWebView = (WebView) findViewById(R.id.webViewer); 

    // Enable Javascript 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 

    // Set WebViewClient and WebChromClient 
    mWebView.setWebViewClient(new MyWebViewClient()); 
    mWebView.setWebChromeClient(new MyWebChromeClient()); 
また

、あなたはどのようなコードを使用していますか?

2

複数のウィンドウが許可されていることを「親」Webviewに伝えましたか?

WebView parentWebview = (WebView) findViewById(R.id.parent_webview); 
// ... 
parentWebview.getSettings().setSupportMultipleWindows(true); 

これは私が見た最も一般的な間違いです。

0

この行をコードに追加して、onCreateWindow()を呼び出します。 webView.getSettings()。setSupportMultipleWindows(true);

関連する問題