1

我在单一布局中创建了一个 edittext 和一个 go 按钮和一个 webview。当一个人输入一个 url 并点击 go 按钮时,webview 应该加载网站内容,而不是默认浏览器来加载网站我应该如何解决这个问题?

这是我的代码

xml文件

      <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" >

<WebView
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginTop="50dip" />


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

    <EditText
        android:id="@+id/etenterurl"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:inputType="textUri" />

    <Button
        android:id="@+id/buttongo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="3.0"
        android:text="Go" />
 </LinearLayout>


 </FrameLayout>

爪哇代码:

import java.util.ArrayList;

import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;
import android.annotation.SuppressLint;
import android.app.Activity;


public class MainActivity extends Activity {
EditText etenter;
Button bgo;
WebView webview;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    etenter= (EditText)findViewById(R.id.etenterurl);
    bgo =(Button)findViewById(R.id.buttongo);
    webview = (WebView)findViewById(R.id.webview);
    bgo.setOnClickListener(new View.OnClickListener() {

        @SuppressLint("SetJavaScriptEnabled")
        @Override
        public void onClick(View v) {
            String url=etenter.getText().toString();
            if(url.trim().length()>0){
                webview.getSettings().setJavaScriptEnabled(true);
                webview.loadUrl("http://"+url);

            }

        }
    });


}

}

4

2 回答 2

4

你必须使用WebViewClient

wbView.setWebViewClient(new MyWebViewClient());

  private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
        Log.v("uuuurl",url);
        view.loadUrl(url);
        return true;
    }
}

例如见这里

于 2012-10-23T06:52:37.757 回答
2

你应该使用 WebViewClient

webview.setWebViewClient(new WebViewClient(){

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                Log.d("TAG", " ==> "+url);
                view.loadUrl(url);
                return true;                
            }   

        });
于 2012-10-23T06:50:22.623 回答