2010-12-05 3 views
8

내 응용 프로그램에 2 개의보기가 있습니다 :다른보기에 웹보기 포함하기

a. res/layout/main.xml - 1 버튼이있는 표준보기

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

: 내가 처음보기의 (a)에있는 버튼을 클릭하면 고해상도/레이아웃/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> 

, 그것은 URL을 (b)는 웹보기를로드하고로드 괜찮 으면 URL로드가 잘되지만 브라우저 은 자신의 뷰 (세 번째 것, b 자체가 아닙니다)로 인스턴스화됩니다. 내 목표는 Webview를 사용하여 일부 HTML 코드를 내 응용 프로그램에 표시하는 것입니다. 별도의 브라우저.

어떤 아이디어가 있습니까?

API 레벨 8/Android 2.2를 사용하여 수행됩니다.

도움 주셔서 감사합니다. 폴

+0

. 예를 들어 google chrome은 'http : // www.google.com'을 열어 자신을 등록하는 것으로 보입니다. 다른 도메인 'http : // www.something.com'을 시도해도 같은보기에서 열립니다. 다만 FYI –

답변

15

실제로 나는 마침내 이해했다. 당신이 프로그래밍 방식

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

에 URL을로드해도 당신은 또한 (새 브라우저 인스턴스에 URL을 여는) 기본 동작을 mofify해야합니다.
이전 코드에는 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에에게 새로운 동작을 사용하는 뷰 설정 :

내가 의도 청취자가 등록 된 몇 가지 URL을 개방 한 경우에만이 일이 내게 일어난
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

그렇습니다 thats. 귀하의 질문은 사실 당황 스러웠습니다. UR 질문 shudve 웹보기에서 리디렉션 처리에 관해서되었습니다 – Varun

+0

+1 그 사용 전체 –

+0

감사합니다 @ 폴. 나는 마침내 내가 두 시간 동안 찾고있는 것을 발견했다. – bogdanmogo