2012-10-23 91 views
1

我已经在单一布局中创建了edittext和go按钮以及webview。当一个人输入一个url并点击go按钮时,webview应该加载网站内容,而不是默认浏览器来加载网站我该如何解决这个问题?如何在同一页面加载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> 

java代码:

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

      } 

     } 
    }); 


} 

}

+0

你可以发布你的代码.. – Nermeen

回答

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

See here例如

+0

它的工作,我有一个问题,多给IM作为50dp宽线性布局和50dp为paddingTop for webview,但webview不会相应地对齐。 – Anirudh

+0

路径和错误:)。通过在高度和宽度上进行更改 – Abhi

+0

尝试了很多,完全没有工作 – Anirudh

2

你应该使用WebViewClient

webview.setWebViewClient(new WebViewClient(){ 

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

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

     }); 
相关问题