2011-11-12 56 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"); 
     } 
    } 
});