2010-12-05 22 views
8

私のアプリケーションには2ビューがあります。別のビューにwebviewを埋め込む

a。 res/layout/main.xml - 1つのボタンを持つ標準ビュー

b。解像度/レイアウト/ web_view.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
     <WebView android:id="@+id/webview" 
      android:layout_height="fill_parent" 
      android:layout_width="fill_parent" /> 
</LinearLayout> 

私は最初のビュー(a)の上のボタンをクリックすると、それは(B)のWebViewをロードし、URLをロードします。動作していること

// click on the "Browser" button in view a 
public void goToWebView(View view) { 
     setContentView(R.layout.web_view); 
     WebView mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.loadUrl("http://www.google.com"); 
    } 

すべてURLはうまくロードされますが、ブラウザは独自のビュー(第3のものではなく、b自体)にインスタンス化されています。私の目標は、Webviewを使用してアプリケーションの中にHTMLコードを表示します。別のブラウザ。

Anyboyd any idea?

これはAPIレベル8/Android 2.2を使用して行われます。

ありがとうございました。 ポール

+0

。例えば、Google Chromeは 'http:// www.google.com'を開くために自分自身を登録するようです。他のドメイン「http:// www.something.com」を試してみると、同じビューで開くことになります。ちょうどFYI –

答えて

15

実際に私はついに理解しました。あなたがプログラム的

mWebView.loadUrl("http://www.google.com"); 

にURLを読み込む場合でも、あなたはまた、(新しいブラウザインスタンスでURLを開いている)、デフォルトの動作をmofifyする必要があります。
前のコードには2つの拡張が必要です。

// override default behaviour of the browser 
private class MyWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    } 

次に、Webクライアントに新しい動作を使用してビューの設定:

私は意図-リスナーが登録されたため、いくつかのURLを、開けたときにのみ、この事は私に起こった
public void goToWebView(View view) { 
     setContentView(R.layout.web_view); 
     WebView mWebView = (WebView) findViewById(R.id.webview); 
     // add the following line ---------- 
     mWebView.setWebViewClient(new MyWebViewClient()); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.loadUrl("http://www.google.com"); 
    } 
+0

はいthatsのことです。あなたの質問は実際には間違っていた。あなたはウェブビューでリダイレクションを処理することに関してshudveされました – Varun

+0

+1その使用がいっぱいです –

+0

@Paulありがとうございます。ついに2時間捜しているものが見つかりました。 – bogdanmogo

関連する問題