2011-11-12 55 views
0

我正在從網絡視圖從數據庫加載loadDataWithBaseURL()函數,並試圖隨後跳轉到錨點。當我在使用loadUrl()功能的webview下方放置一個按鈕時,它會跳轉到錨點。但是,如果我將loadUrl()放在loadDataWithBaseURL()之後,則表示頁面未找到。Android Webview,使用錨點

webview.loadDataWithBaseURL("app:myhtml", data, "text/html", "UTF-8", null); 
webview.loadUrl("app:myhtml#tips"); 

我以爲這是因爲負載尚未完成,因此無法找到錨,但我想一個循環來等待它getProgress()等於100,並且已經證實它的前到達100該命令執行,但它仍然不會找到頁面,除非它與按鈕單擊關聯。

任何想法如何我可以從數據庫中加載一個頁面,然後同時跳轉到一個錨點。我正在使用Android 2.1 SDK。


感謝您的幫助,我通過添加這一小段代碼直接加載到我的錨點。不過,我無法在頁面上滾動,它開始移動然後快速返回。我懷疑是因爲它每次都將頁面重新加載到該錨點。我對Android和Java甚至是新手,所以這可能是你的建議的錯誤實現,但我當然會讚賞更多的方向。這裏是我使用的代碼:

webview.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(webview, "app://data"); 
     webview.loadUrl("app://data#tips"); 
    } 
}); 

看來這是一個無限循環。

+0

檢查這個答案http://stackoverflow.com/questions/11188348/android-html-anchor-link-works-only-once-in-webview/11205345#11205345 – MKJParekh

回答

1

嘗試使用有效的網址作爲loadDataWithBaseURL()中的基準網址,例如app://myhtml

此外,要確保數據已加載實施WebViewCLient.onPageFinished()

+0

感謝您的幫助,我得到了它通過添加這一小段代碼直接加載到我的錨點。不過,我無法在頁面上滾動,我懷疑是因爲它每次都將頁面重新加載到該錨點。我對Android和Java甚至是新手,所以這可能是你的建議的錯誤實現,但我當然會讚賞更多的方向。 webview.setWebViewClient(新WebViewClient(){ @Override 公共無效onPageFinished(web視圖視圖,字符串URL){ super.onPageFinished(web視圖, 「應用://數據」); webview.loadUrl(「應用程序://data#tips「);} }); – codesurgeon

0

它在進入無限的onPageFinished循環之前。它與我滾動無關,它只是不斷加載相同的頁面。這段代碼允許它在不陷入循環的情況下加載。

webview.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     if(url.contains("#") != true){ 
      webview.loadUrl("app://data#tips"); 
     } 
    } 
});