2010-12-05 1 views
8

У меня в приложении 2 просмотров:Внедрение webview в другой вид

a. res/layout/main.xml - стандартный вид с кнопкой 1

b. Рез/макет/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> 

При нажатии на кнопку на первый взгляд (а), он загружает WebView (б) и загружает URL:

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

Все, что работает хорошо, загрузка url хорошо, но браузер был создан в своем собственном виде (третий, а не сам), и моя цель - использовать Webview для отображения некоторого кода HTML в моем приложении, а не вне его, в отдельный браузер.

Anyboyd любая идея?

Это делается с использованием уровня API8/Android 2.2.

Благодарим за помощь. Paul

+0

Это самое случилось со мной только тогда, когда я открывал несколько URL-адресов, для которых были зарегистрированы намерения слушателей. Например, google chrome, похоже, зарегистрируется для открытия `http: // www.google.com`. Когда я попробовал любой другой домен `http: // www.something.com`, он будет открыт в том же представлении. Только FYI – 2014-05-30 13:10:42

ответ

15

На самом деле я, наконец, понял. Даже если вы программно загрузить URL с

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

Затем установите для вида, который использует WebClient новое поведение:

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