按钮点击更改WebView URL

时间:2015-11-15 21:25:05

标签: java android webview

我希望当有人点击按钮更改使用的URL WebView时。

第一次,应用程序显示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;
        }
    }

}

1 个答案:

答案 0 :(得分:0)

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;
        }
    }