2012-12-08 36 views
1

我想獲取webview的url。但是,該方法在頁面加載完成之前調用,因此它始終返回null。任何方式在這個?謝謝。WebView.getUrl()返回null,因爲頁面未完成加載

WebView webView = new WebView(this); 
setContentView(webView); 

webView.loadUrl(myURL); 

//page is not done loading yet 
String url = webView.getUrl(); //returns null 
+0

我不明白這個問題。請更清楚解釋併發布您使用的代碼。 – Squonk

+0

我添加了我的代碼。 – onepiece

+0

http://stackoverflow.com/questions/3179212/webview-geturl-returns-null – trante

回答

2

嘗試添加WebViewClient並重寫onPageFinished(...)方法。我從來沒有做過,但這樣的事情可能工作...

String theUrl; 
WebView webView = new WebView(this); 
setContentView(webView); 

webview.setWebViewClient(new WebViewClient() { 

    public void onPageFinished(WebView view, String url) { 
     theUrl = url; 
    } 

}); 

webView.loadUrl(myURL); 
+0

有沒有辦法不斷檢查網址? (例如:當URL更改時推進到另一個活動)。 – onepiece

+0

根據文檔,每當任何Web頁面的主框架在「WebView」對象中完成加載時,都會調用「onPageFinished(...)」。代碼僅僅是一個例子,正如我所說的,這不是我以前使用過的東西。嘗試在'onPageFinished(...)'方法中放入'startActivity(...)'調用,而不是'theUrl = url'的示例。 – Squonk

+0

你在startActivity裏面放了什麼? – onepiece

2

創建的WebViewClient子類,覆蓋onPageStarted(webView, url, favicon)並將其設置你的WebView(使用setWebViewClient())來。
您將獲得正在加載或顯示的頁面的網址。

+0

所以我想創建一個類CustomWebViewClient擴展WebViewClient,然後覆蓋onPageStarted?我會在該方法中放什麼,以及我如何使用setWebViewClient()? 謝謝。 – onepiece

+0

我建議你做同樣的事情比在Squonk後,但你重寫'onPageStarted'而不是'onPageFinished'。這樣做,您的屬性'theUrl'將始終包含WebView的當前網址 – yDelouis