Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] : WebView & Bouton Retour

Action du bouton retour dans une WebView

Sujet résolu
    4 juillet 2012 à 20:26:26

    Bonjour,

    Je cherche a permettre l'utilisation du bouton "Retour" dans une WebView pour faire un "précédent" dans le navigateur,
    et ceci via l'utilisation du code suivant :
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // Check if the key event was the Back button and if there's history
        if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack() {
            myWebView.goBack();
            return true;
        }
        // If it wasn't the Back key or there's no web page history, bubble up to the default
        // system behavior (probably exit the activity)
        return super.onKeyDown(keyCode, event);
    }
    


    dans l'application suivante :

    public class ProgTVActivity extends Activity {
    	
    	final Activity activity = this;
    	
    	@SuppressLint("SetJavaScriptEnabled")
    	@Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
            setContentView(R.layout.main);
            getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
            final WebView webView = (WebView) findViewById(R.id.webview);
            	webView.getSettings().setJavaScriptEnabled(true);
            ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
            if(cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting()){
                webView.getSettings().setCacheMode(WebSettings.LOAD_NORMAL);
            }
            else{
                webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
            }
            
            final ProgressDialog progressDialog = new ProgressDialog(activity);
            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progressDialog.setMessage("Chargement Prog TV : Partie 1");
            progressDialog.setCancelable(true);
            webView.setWebViewClient(new WebViewClient()
            {
            	@Override
                public boolean shouldOverrideUrlLoading(WebView view, String url)
                {
                    view.loadUrl(url);
                    return true;
                }
            	@Override
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
                {
    				webView.loadUrl("file:///android_asset/erreur.html");
    				}  
            });
               
            webView.loadUrl("http://site.com");
            
            webView.setWebChromeClient(new WebChromeClient()
            {
            	public void onProgressChanged(WebView view, int progress)
                {
                    progressDialog.show();
                    progressDialog.setProgress(0);
                    activity.setProgress(progress * 1000);
                    progressDialog.incrementProgressBy(progress);
                    if (progress == 100 && progressDialog.isShowing())
                        progressDialog.dismiss();
                    if(progress == 100 && webView.getSettings().getCacheMode() == WebSettings.LOAD_CACHE_ONLY)
                    activity.setTitle("CACHE chargé");
                }
            });
    }
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		getMenuInflater().inflate(R.menu.menuhoney, menu);
    		return super.onCreateOptionsMenu(menu);
    	}
        
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
        	switch (item.getItemId()) {
        	case R.id.itemClose:
        			this.finish();
        			return true;
        			default:
        	case R.id.item2P:
        	          // app icon in action bar clicked; go home
        	          Intent intent3 = new Intent(this, ProgTVActivity2P.class);
        	          intent3.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        	          startActivity(intent3);
        			return true;
        	}
        }
    }
    


    mais impossible de le faire fonctionner. Un conseil sur l'emplacement, le code?

    Merci d'avance.

    EDIT : Petit problème de déclaration des WebView mais tout est rentré dans l'ordre.
    • Partager sur Facebook
    • Partager sur Twitter

    [Android] : WebView & Bouton Retour

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown