我想当有人点击一个按钮来改变网页浏览使用的网址。
第一次,应用程序显示yahoo.com。这是正确的。
当有人点击第一个或第二个按钮时,链接将在浏览器中打开。我要做什么来“刷新”页面?希望你能理解。
这是我的.xml文件:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    tools:context=".MainActivity"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button1"
            android:id="@+id/button1"
            android:onClick="buttonClick"
            android:layout_weight="1.0" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button2"
            android:id="@+id/button2"
            android:onClick="buttonClick"
            android:layout_weight="1.0" />

    </LinearLayout>

    <WebView
            android:id="@+id/activity_main_webview"
            android:layout_height="0dp"
            android:layout_width="fill_parent"
            android:layout_weight="0.9"/>

</LinearLayout>

这里是我的mainactivity.java:
public class MainActivity extends AppCompatActivity {

    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView = (WebView) findViewById(R.id.activity_main_webview);

        WebSettings webSettings = mWebView.getSettings();

        Context context = this;
        mWebView.getSettings().setGeolocationDatabasePath(context.getFilesDir().getPath());

        webSettings.setJavaScriptEnabled(true);

        mWebView.setWebViewClient(new WebViewClient());

        mWebView.setWebChromeClient(new WebChromeClient() {
            public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
                callback.invoke(origin, true, false);
            }
        });

        mWebView.loadUrl("http://yahoo.com");

    }

    public void buttonClick(View v) {
        switch (v.getId()) {
            case R.id.button1:
                setContentView(R.layout.activity_main);
                mWebView = (WebView) findViewById(R.id.activity_main_webview);
                mWebView.loadUrl("http://google.com");
                break;
            case R.id.button2:
                setContentView(R.layout.activity_main);
                mWebView.loadUrl("http://bing.com");
                break;
        }
    }

}

最佳答案

loadUrl正在打开一个新浏览器,因为您重新设置了布局,从而生成了一个没有webviewclient的新webview对象。
移除

setContentView(R.layout.activity_main);

以及重新启动webview。
你将得到:
public void buttonClick(View v) {
        switch (v.getId()) {
            case R.id.button1:
                mWebView.loadUrl("http://google.com");
                break;
            case R.id.button2:
                mWebView.loadUrl("http://bing.com");
                break;
        }
    }

10-07 19:19
查看更多