2013-06-26 1 views
0

J'ai un problème avec le bouton de retour dans mon application Android. J'essaie de le faire revenir à travers les pages précédentes et s'il est incapable de sortir. Je choisis le code sur le site Web du développeur et rien ne fonctionne. J'apprécierais toute aide. Voici ma page d'activité:Android Retour Bouton Avec Webview

WebView webView;

@SuppressLint("SetJavaScriptEnabled") 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    webView = (WebView)findViewById(R.id.webView); 
    WebSettings webSettings = webView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webView.setWebViewClient(new myWebView()); 
    webView.loadUrl("http://google.com"); 
    webView.setInitialScale(1); 
    webView.getSettings().setBuiltInZoomControls(true); 
    webView.getSettings().setUseWideViewPort(true); 
} 

@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) && webView.canGoBack()) { 
     webView.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); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.diabetes_meal_planner, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()) 
    { 
     case R.id.action_settings: 
      //exits app 
      finish(); 
      break; 

     default: 
      break; 
    } 

    return true; 
} 

private class myWebView extends WebViewClient 
{ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     if(url.startsWith("mailto:")) 
     { 
      String[] email = url.split(":"); 
      Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
      emailIntent.setType("plain/text"); 
      emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{email[1]}); 
      emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Send_Us_Your_Email"); 
      Log.v("NOTICE", "Sending Email to" + email[1] + "with subject" + "Send Us Your Feedback"); 
      startActivity(emailIntent); 
     } 

     view.loadUrl(url); 
     return true; 
    } 

} 
+1

Essayez de vous assurer que vous capitalisez vos noms de classe :) – frogmanx

+0

enlever la partie si dans 'shouldOverrideUrlLoading' et donner un essai – Raghunandan

Répondre

2

Ne faites pas cela onKeyDown. Remplacer Activity.onBackPressed de le faire ..

+0

avez-vous du code? –

0
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView!=null && webView.canGoBack()) { 
     webView.goBack(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

Essayez ceci à la fin, travaille dans mon WebView app