2012-07-24 137 views
2

當我單擊WebView內部的鏈接時,Android打開瀏覽器而不是在WebView中更改URL。在WebView中更改URL而不是打開瀏覽器

這裏是我的片段,其中的WebView是(R.layout.webview包含的WebView只):

package com.example.fragments; 

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

public class EuDetailsFragment extends Fragment { 
    private WebView viewer; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     viewer = (WebView) inflater.inflate(R.layout.webview, container, false); 

     return viewer; 
    } 

    public void updateUrl(String newUrl) { 
     Log.d("EuDetailsFragment", "Updating url..."); 
     WebView detailsView = (WebView) getView().findViewById(R.id.detailsView); 
     detailsView.loadUrl(newUrl); 
    } 
} 
+0

什麼是你想實現什麼?從目前的問題出發,很難說出你想要的東西。 – FoamyGuy 2012-07-24 15:22:48

+0

我錯了標題,對不起。我想在WebView中改變URL而不是打開瀏覽器 – rgtk 2012-07-24 16:20:21

回答

8

的默認行爲是當你點擊一個鏈接時,它會要求ActivityManager找到一個合適的應用來處理鏈接。您可以覆蓋此行爲(這將迫使目前的WebView加載新的網址中本身,而不是)這樣的:

mWebView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) 
     { 
      return false; 
     } 
    }); 
+0

這在技術上是正確的,最好的一種正確的。 – Warpzit 2012-11-08 10:19:25

+0

甚至更​​短的版本myWebView.setWebViewClient(新的WebViewClient()); ' - 從[官方文檔](http://developer.android.com/guide/webapps/webview.html#HandlingNavigation) – MurWade 2015-11-07 05:16:24

2

這是你在找什麼?:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); 
startActivity(intent); 
相關問題