Android Webview,与Anchors合作

时间:2011-11-12 17:39:17

标签: java android anchor android-webview

我正在使用loadDataWithBaseURL()函数从数据库将网页加载到webview中,并尝试随后跳转到Anchor点。当我在使用loadUrl() - 函数的webview下方放置一个按钮时,它会很好地跳转到Anchor点。但是,如果我将loadUrl()放在loadDataWithBaseURL()之后,则表示找不到页面。

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

我认为这是因为负载没有完成,因此无法找到Anchor,但我尝试了一个循环来等待它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");
    }  
});

似乎这是一个无限循环。

2 个答案:

答案 0 :(得分:1)

尝试使用有效网址作为loadDataWithBaseURL()中的基本网址,例如app://myhtml

另外,要确保数据已加载,请执行WebViewCLient.onPageFinished()

答案 1 :(得分:0)

之前进入无限的onPageFinished循环。它与我滚动无关,只是不断加载同一页面。这段代码允许它加载而不会陷入循环。

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