2017-02-06 8 views
0

Если я возвращаю истину на shouldOverrideUrlLoading, веб-представление не может обрабатывать onPageFinish когда нагрузки нового URL.Android WebView не может справиться с pageFinish

@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); 
    } 
+0

я решил. это произошло из-за использования ** pauseTimers() ** в методе MyActivity ** ondestroy() **. –

ответ

0
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); 
     } 
    } 
+0

Спасибо за ваш ответ. Bu я должен узнать, почему я не могу обработать pageFinish после того, как метод toOverrideUrlLoading вернет true. И я хочу решить эту проблему без использования WebChromeClient. –

+0

@Muhammed: «Бу, я должен узнать, почему я не могу обработать pageFinish после того, как метод toOverrideUrlLoading вернет true». Поскольку при возврате true в shouldOverrideUrlLoading вы указываете текущему веб-просмотру НЕ загружать URL-адрес, это означает, что также не будут вызваны обратные вызовы (onPageStarted, onPageFinished). https://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String) –

 Смежные вопросы

  • Нет связанных вопросов^_^