8

我的应用程序中有 2 个视图:

一个。res/layout/main.xml - 带有 1 个按钮的标准视图

湾。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>

当我单击第一个视图(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 本身),我的目标是使用 Webview 在我的应用程序中显示一些 HTML 代码,而不是在它之外,在单独的浏览器中。

Anyboyd有什么想法吗?

这是使用 API level8/Android 2.2 完成的。

谢谢你的帮助。保罗

4

1 回答 1

16

其实我终于明白了。即使您以编程方式加载网址

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 回答