2017-12-25 4 views
0

Ich weiß, wie man benachrichtigt wird, wenn es eine Webseite lädt, aber gibt es eine Möglichkeit zu wissen, wann es beginnt, eine neue zu laden, die von einem Link von der ursprünglichen Webseite initiiert wird?Wie kann ich benachrichtigt werden, wenn ein WebView eine neue Seite lädt?

Der Grund, warum ich will, ist eine ProgressBar sichtbar zu machen, wann immer eine Seite geladen wird, und sie unsichtbar zu machen, wenn sie fertig ist.

UPDATE: Wie ich gesagt habe, Ich weiß, wie informiert werden, wenn es fertig ist das Laden einer Webseite. Was ich jetzt frage ist, ob es möglich ist zu wissen, wann eine neue Seite beginnt, eine Seite zu laden. Obwohl von der Verbindung fand ich onPageStarted, und es funktioniert.

+0

Mögliche Duplikat von [Wie für eine WebView hört Beendigung einer URL geladen?] (https://stackoverflow.com/questions/3149216/how-to-listen-for-a-webview-finishing-loading -au rl) –

Antwort

0

für eine Webseite Start Laden So hören Sie onPageStarted außer Kraft setzen sollte, zu hören Schlichten sollten Sie onPageFinished außer Kraft setzen und nur um es zu vervollständigen, hört für Fehler mit onReceivedError

webView.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon){ 
      super.onPageStarted(view, url, favicon); 

      // runs when a page starts loading 
      progressBar.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 

      // page finishes loading 
      progressBar.setVisibility(View.GONE); 
     } 

     @Override 
     public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 
      super.onReceivedError(view, request, error); 

      // runs when there's a failure in loading page 
      progressBar.setVisibility(View.GONE); 
      Toast.makeText(context, "Failure on loading web page", Toast.LENGTH_SHORT).show(); 
     } 
}); 
+1

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität zu verbessern von deinem Beitrag. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. –

0

überprüfen mit der folgenden

webView.setWebViewClient(new WebViewClient() {  


     //If you will not use this method url links are opeen in new brower not in webview 
     public boolean shouldOverrideUrlLoading(WebView view, String url) {    
      view.loadUrl(url); 
      return true; 
     } 


     public void onLoadResource (WebView view, String url) { 
      //Show loader on url load 
     } 

     public void onPageFinished(WebView view, String url) { 
      //cancel loader complted 
     } 

    }); 

    // Set Javascript enabled on webview 
    webView.getSettings().setJavaScriptEnabled(true); 
+0

es lädt bereits neue Links innerhalb der 'WebView' (obwohl die Methode, die Sie verwenden, veraltet ist, und die neue Methode' WebResourceRequest' anstelle von 'String URL' zurückgibt und' getUrl' nur auf 'Anfrage' aufruft funktioniert in api 25 + !!?), und 'onLoadResource' wird beim Laden der Seite mehrfach aufgerufen. Ich werde mit 'onPageStart' gehen. Danke anyways – SIMMORSAL

Verwandte Themen