【问题标题】:Android webView cannot handle pageFinishAndroid webView 无法处理 pageFinish
【发布时间】:2017-02-06 08:00:35
【问题描述】:

如果我在 shouldOverrideUrlLoading 上返回 true,则 Web 视图在加载新 url 时无法处理 onPageFinish

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
         if (Uri.parse(url).getHost().equals("www.abc.com")) {
              Intent intent = new Intent(context, MyActivity.class);
              context.startActivity(intent);
              return true;
         }
         return super.shouldOverrideUrlLoading(view, url);
    }

禁用页面完成进度。

     @Override
     public void onPageFinished(WebView view, String url) {
          super.onPageFinished(view, url);
          progress.setVisibility(View.GONE);
     }

【问题讨论】:

  • 我解决了。这是因为在 MyActivity ondestroy() 方法中使用了 pauseTimers()

标签: android webview webviewclient


【解决方案1】:
try this code

webview.setWebViewClient(new myWebClient());

        webview.setWebChromeClient(new WebChromeClient()
        {
            public void onProgressChanged(WebView view, int progressInt)
            {
                if (progressInt < 80 && progress.getVisibility() == ProgressBar.GONE)
                {
                    progress.setVisibility(ProgressBar.VISIBLE);
                }

                if (progressInt >= 80)
                {
                    progress.setVisibility(ProgressBar.GONE);
                }
            }
        });

public class myWebClient extends WebViewClient
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
            progress.setVisibility(View.VISIBLE);
            view.loadUrl(url);
            return true;

        }

        @Override
        public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
            super.onPageFinished(view, url);
            progress.setVisibility(View.GONE);
        }
    }

【讨论】:

  • 感谢您的回答。但是我必须了解为什么在 shouldOverrideUrlLoading 方法返回 true 后我无法处理 pageFinish。我想在不使用 WebChromeClient 的情况下解决这个问题。
  • @Muhammed:“我必须了解为什么我不能在 shouldOverrideUrlLoading 方法返回 true 后处理 pageFinish”。因为当在 shouldOverrideUrlLoading 中返回 true 时,你告诉当前 webview 不要加载 url,这也意味着不会调用回调(onPageStarted、onPageFinished)。 developer.android.com/reference/android/webkit/…, java.lang.String)
猜你喜欢
  • 2011-09-13
  • 1970-01-01
  • 2016-05-10
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 2021-04-24
  • 1970-01-01
相关资源
最近更新 更多