2010-12-05 110 views
8

我在我的应用程序中有2个视图:将webview嵌入到另一个视图

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

b。 RES /布局/ 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)按钮,加载web视图(b)和加载一个网址:

// 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"); 
    } 

所有这一切工作很好,网址加载良好,但浏览器被实例化到它自己的视图(第三个,而不是b本身),我的目标是使用Webview将一些HTML代码显示到我的应用程序中,而不是在其外部独立浏览器。

Anyboyd有什么想法吗?

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

感谢您的帮助。 Paul

+0

这件事情发生在我身上只有当我打开一些网址,为此目的,听众注册。例如谷歌浏览器似乎注册自己打开“http:// www.google.com”。当我尝试任何其他域`http:// www.something.com`时,它将在相同的视图中打开。只是供参考 – 2014-05-30 13:10:42

回答

15

其实我终于明白了。即使你用编程

mWebView.loadUrl("http://www.google.com"); 

加载的网址,您还必须mofify默认行为(这是在新的浏览器打开一个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; 
     } 
    } 

然后,它使用Web客户端的新的行为视图设置:

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"); 
    } 
+0

是的多数民众赞成的事情。你的问题实际上令人困惑。你的问题shudve一直在处理重定向在webview – Varun 2010-12-05 14:36:34

相关问题