8

私のアプリケーションには2つのビューがあります:

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

b。res / layout / 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>

最初のview(a)のボタンをクリックすると、webview(b)が読み込まれ、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は正常に読み込まれますが、ブラウザーは独自のビュー(b自体ではなく3番目のビュー)にインスタンス化されます。私の目標は、Webviewを使用して、アプリケーションの外部ではなく、アプリケーションにHTMLコードを表示することです。別のブラウザで。

誰かアイデアはありますか?

これは、API level8 /Android2.2を使用して行われます。

ご協力いただきありがとうございます。ポール

4

1 に答える 1

16

実はようやくわかりました。プログラムでURLをロードする場合でも

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

また、デフォルトの動作(新しいブラウザインスタンスでURLを開く)を変更する必要があります。
前のコードには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;
        }
    }  

次に、Webclientを使用するビューに新しい動作を設定します。

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");
    }
于 2010-12-05T14:34:34.837 に答える