2013-07-27 7 views
0

J'ai un Webview qui charge une URL à partir d'Internet, mais lorsqu'il n'y a pas de connectivité (onReceiedError), il charge un document html enregistré localement dans le dossier des actifs.Webview ne peut pas revenir en arrière avec html local

mais quand j'appuie sur le bouton de retour sur cette activité particulière (qui charge le HTML local) il ne revient pas à l'activité précédente à la place essaie de rafraîchir la page .. C'est seulement après 4-5 il revient.

Voici mon code.

private class HelloWebViewClient extends WebViewClient{  
     @Override 
      public void onReceivedError(WebView view, int errorCode,     
        String description, String failingUrl) { 
      mWebView.getSettings().setBuiltInZoomControls(false); 
       mWebView.getSettings().setLoadWithOverviewMode(false); 
       mWebView.getSettings().setUseWideViewPort(false); 
      mWebView.loadUrl("file:///android_asset/offline.html"); 
     } 


     public boolean shouldOverrideUrlLoading(WebView webview, String url) 
     { 
      webview.loadUrl(url); 
      return true; 

     } 
    } 

    @Override 
    public boolean onKeyDown(int KeyCode, KeyEvent event) 
    { 
     if ((KeyCode)== KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) 
     { 
      mWebView.goBack(); 
      return true; 

     } 
     return super.onKeyDown(KeyCode, event); 
    } 

    @Override 
    public void onBackPressed() 
    { 
     this.finish(); 
     overridePendingTransition (0, R.anim.right_slide_out); 
     return; 
    } 
    } 

Fonctionne correctement avec la page Web normale pour charger à partir d'Internet.

Répondre

0

coz in onReceivedError vous changez l'URL. il n'y aura pas d'événement goback

vous devez juste afficher le message de toast et supprimer mWebView.loadUrl("file:///android_asset/offline.html");

Questions connexes