2010-12-05 56 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

相關問題