2014-01-16 2 views
7

Ich habe ein Webview in meiner App und es öffnet sich außerhalb davon, während ich es innen öffnen möchte ... Ich habe alle Beispiele auf stackoverflow gelesen und immer noch don ‚t wissen, warum es ist wie diesesWebview innerhalb Fragment Android Eröffnung außerhalb der App in einem Browser

NewsFragment.java

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebView; 

public class NewsFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.news, container, false); 

     WebView webView = (WebView)rootView.findViewById(R.id.webView); 

     webView.setInitialScale(1); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setLoadWithOverviewMode(true); 
     webView.getSettings().setUseWideViewPort(true); 
     webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
     webView.setScrollbarFadingEnabled(false); 

     webView.loadUrl("https://www.google.com"); 

     return rootView; 
    } 
} 

XML-Datei:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <WebView 
     android:id="@+id/webView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 
+1

möglich Duplikat [Deaktivieren Adressleiste in Android webview] (http://stackoverflow.com/questions/4136362/disable-address-bar-in-android-webview) – CommonsWare

+0

FYI: Ich fühle mich nicht dieses ist ein Duplikat des erwähnten SO-Eintrags, weil ich ein Beispiel genau so hatte und mein Problem mit der Frage und der Antwort unten durcharbeiten konnte. Dies ist ein guter SO-Eintrag. Ich habe den möglichen doppelten Eintrag gelesen und wäre nie von diesem Eintrag zu meiner Lösung gekommen. – raddevus

Antwort

26

diesen Code Versuchen Sie, müssen Sie das außer Kraft setzen "shouldOverrideUrlLoading()"

String url = "http://appprice.appday.de"; 

WebView wv = new WebView(context); 
// or 
// WebView wv = (WebView)findViewById(R.id.my_webview); 

wv.loadUrl(url); 
wv.setWebViewClient(new WebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
}); 
+1

arbeiten wie ein Charme. –

+0

es funktioniert für mich! –

+0

Es funktioniert, aber könnten Sie bitte mehr Informationen über den Grund geben, dass wir diese Methode überschreiben sollten. – MeLine

4

Sie benötigen diese für mich

webview.setWebViewClient(new WebViewClient()); 
+0

Dies ist die richtige Antwort. Setzen Sie WebViewClient einfach vor dem Aufruf von loadUrl. –

1

folgenden Code arbeiten, um zu versuchen:

webView = finder.find(R.id.webView_for_info); 

webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setDomStorageEnabled(true); 

webView.setWebViewClient(new WebViewClient()); 
//webView.setWebChromeClient(new WebChromeClient()); 

webView.loadUrl("file:///android_asset/info.html"); 
0

try this:

public class WebViewGameActivity extends BaseActivity { 
    private static final String TAG = WebViewGameActivity.class.getSimpleName(); 


    private WebView myWebView; 

     @SuppressLint("SetJavaScriptEnabled") 
    @Override   
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.layout_webview); 


      myWebView = (WebView) findViewById(R.id.webview); 

      // Configure related browser settings 
      WebSettings webSettings = myWebView.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      webSettings.setLoadsImagesAutomatically(true); 

      myWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 

      // Configure the client to use when opening URLs 
      myWebView.setWebViewClient(new MyBrowser()); 

      // Load the initial URL 
      //myWebView.loadUrl("http://www.example.com"); 

      String path = Uri.parse("file:///android_asset/index.html").toString(); 
      myWebView.loadUrl(path); 


     }//end onCreate 



     // Manages the behavior when URLs are loaded 
     private class MyBrowser extends WebViewClient { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
      } 
     } 




}//end WebViewGameActivity 
0

versuchen, diese ... wie wenn u klicken In der Webansicht im Fragment werden Sie nicht aufgefordert, in einer neuen Browseranwendung zu öffnen !!

String url = "https://www.google.co.in/"; 
    WebView view = (WebView) rootView.findViewById(R.id.webView1); 


    view.getSettings().setJavaScriptEnabled(true); 
    view.getSettings().setLoadWithOverviewMode(true); 
    view.getSettings().setUseWideViewPort(true); 
    view.getSettings().setBuiltInZoomControls(true); 
    view.getSettings().setPluginState(WebSettings.PluginState.ON); 
    view.setWebViewClient(new WebViewClient()); 

    view.loadUrl(url); 

    return rootView ; 
} 
Verwandte Themen