在我的Android应用程序中,一个Web视图包装了一个移动网站。当用户浏览移动网站时,我想显示/隐藏后退和/或前进箭头以帮助他/她导航。要确定show hide back and forward箭头,我在webviewClient的onPageFinished()中检查webview canGoBack()和canGoForward()(参见下面的代码)。以下是问题所在。
导航序列 - 第1页,第2页和第3页。 OnPageFinished()仅在Page1上触发,而不是Page2和Page3。
我还尝试将WebChromeClient添加到webview并捕获onProgressChanged(),但onProgressChanged仅在Page1和Page3上触发。
因此,我只能在第3页而不是Page2上显示后退箭头。在Page3上,当在Page2上点击onPageFinished()后向箭头时。
我无法访问移动网络,无法在移动网络上获得任何帮助。基于查看html的源代码,我发现在Page1上单击了一个超链接以进入Page2。
我的问题是为什么Page2和Page3上的onProgessChanged()在按Page1,Page2和Page3的顺序导航时没有触发,但是在退出时onProgressChange()在Page2上触发。
您的任何帮助将受到高度赞赏。如果您需要更多细节,请告诉我。
@覆盖 protected void onCreate(Bundle savedInstanceState){
...
wv = (WebView) findViewById(R.id.webView);
wv.getSettings().setJavaScriptEnabled(true);
wv.setWebViewClient(new WebViewHandler());
wv.setWebChromeClient(new WebChromeHandler());
wv.loadUrl(urlPassedIn);
...
}
private class WebViewHandler extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
int visible = wv.canGoBack() ? View.VISIBLE : View.INVISIBLE;
navBack.setVisibility(visible);
visible = wv.canGoForward() ? View.VISIBLE : View.INVISIBLE;
navForward.setVisibility(visible);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
private class WebChromeHandler extends WebChromeClient
{
@Override
public void onProgressChanged(android.webkit.WebView view, int newProgress)
{
super.onProgressChanged(view, newProgress);
if(newProgress == 100)
{
//inject java code here
int visible = wv.canGoBack()? View.VISIBLE: View.INVISIBLE;
navBack.setVisibility(visible);
visible = wv.canGoForward()? View.VISIBLE: View.INVISIBLE;
navForward.setVisibility(visible);
wv.loadUrl("javascript:( function () { var resultSrc = (document.querySelector('#content .product-detail') !=null); window.callout.directionCallback(resultSrc); } ) ()");
}
}
}