2011-12-27 43 views
3

我目前正在寫一個web視圖/外部網站的鏈接,它首先加載一個Twitter頁面(比如, NHL,http://twitter.com/nhl) 你可以看到,你可以找到NHL的鳴叫,每個NHL tweet有 供用戶點擊的另一個鏈接,例如bit.ly/ujcNZo打開彈出當前的WebView

在我的WebView

,如果我點擊1秒後該鏈接(即bit.ly/ujcNZo),我的web視圖, ,並不在一個白色 彩色背景上顯示什麼,但一個Twitter圖標,它應該加載內容但它沒有。

調查一段時間後,我覺得它有與事實 ,在推特的鏈接(即bit.ly/ujcNZo)實際上是打開一個單獨的窗口中 鏈接(彈出?),而不是 鏈接發佈的當前頁面,我通過在我的筆記本電腦上訪問NHL的twitter頁面上的 瀏覽器對此進行了驗證。

我的問題是, 1.有沒有一種方法可以在我當前的webview中加載外部鏈接的內容(比如bit.ly/ ujcNZo)?

+0

我遇到同樣的問題,我的webview非答案爲我工作。 你解決了這個問題,因爲我可以看到有4個月沒有評論 – nishi 2012-04-16 09:50:06

+0

沒有先生,不幸的是:/,請讓我知道如果你解決了它... – user1118019 2012-04-18 16:54:01

回答

2

您可以通過WebViewClient類來控制它。只需將其擴展並覆蓋默認實現即可獲得所需的配置,然後將其設置爲當前webview的客戶端。

活動

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

      // set the webViewClient to a new instance of your custom WebViewClient 

    webview.setWebViewClient(new WebActivityClient(this)); 

} 

客戶自

/** WebViewClient class for WebView in WebActivity */ 
private class WebActivityClient extends WebViewClient { 

    public static final String TAG = "WebActivityClient"; 
    private Context context; 

    /** Constructor used to grab the context */ 
    public WebActivityClient(Context context) { 
     this.context = context; 
    } 

    /** Override to load every link within the page inside this webview instead of using 
    * android's default application 
    * #7 http://developer.android.com/resources/tutorials/views/hello-webview.html */ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 

} 

希望這有助於!

+1

嗨傑裏謝謝你的回覆。但是你的解決方案不起作用。我的代碼已經在做你正在做的事情,除非我沒有在構造函數中傳遞上下文。事實上,在你的代碼中,儘管你傳遞的是上下文,但是你沒有在其他地方使用它,所以我不確定它的用途。這不是關於在webview中加載網頁,我已經可以做到這一點。我的問題是在現有的webview中加載一個鏈接(這是OPENS AS POPUP)。 – user1118019 2011-12-28 04:28:45

+0

進一步測試後,似乎任何彈出鏈接(即超鏈接,將在一個單獨的窗口中打開內容)不TRIGGER shouldOverrideUrlLoading方法...如果您打開一個非彈出鏈接...它總是觸發shouldOverrideUrlLoading方法... – user1118019 2011-12-28 05:33:34

+0

我沒有提供完整的代碼,只是一行來展示如何設置WebClient屬性和該類的部分實現。我認爲這會讓你指向正確的方向。在幫助和爲你工作之間有一條細線hehehe因此,如果你在shouldOverrideUrlLoading上拋出一個斷點,它永遠不會被調用?如果是這樣,請提供一個測試網址,我會看到我的實施會發生什麼。 – jerrylroberts 2011-12-28 12:12:12