2016-08-03 9 views
0

Ich habe eine App, in der ich ein WebView habe, wo ich einige Websites anzeigen. Es funktioniert, indem Sie auf einen Link in der Webseite klicken, um zur nächsten Seite auf der Website innerhalb meiner App zu gelangen. Aber wenn ich auf den Zurück-Button des Telefons klicke, kann ich direkt in meine App gelangen. Ich möchte stattdessen zur vorherigen Seite auf der Website zurückkehren. Wie kann ich das machen?Warum funktioniert die Zurück-Taste nicht mit diesem Code?

Hier ist mein Code.

public class WebView extends AppCompatActivity { 

private android.webkit.WebView webView; 
private ProgressBar progressBar; 
private LinearLayout layoutProgress; 


@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.webview); 

    webView = (android.webkit.WebView) findViewById(R.id.webViewMain); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 
    layoutProgress = (LinearLayout) findViewById(R.id.layoutProgress); 
    webView.setVisibility(View.GONE); 
    WebSettings settings = webView.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setBuiltInZoomControls(true); 
    settings.setSupportZoom(true); 
    settings.setDisplayZoomControls(false); 

    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(android.webkit.WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageFinished(android.webkit.WebView view, String url) { 
      webView.setVisibility(View.VISIBLE); 
      layoutProgress.setVisibility(View.GONE); 
      progressBar.setIndeterminate(false); 
      super.onPageFinished(view, url); 
     } 

     @Override 
     public void onPageStarted(android.webkit.WebView view, String url, Bitmap favicon) { 
      layoutProgress.setVisibility(View.VISIBLE); 
      progressBar.setIndeterminate(true); 
      super.onPageStarted(view, url, favicon); 
     } 
    }); 
    if (isOnline()) { 
     webView.loadUrl("http://www.**********.com/ "); 
    } else { 
     String summary = "<html><body><font color='red'>No Internet Connection</font></body></html>"; 
     webView.loadData(summary, "text/html", null); 
     toast("No Internet Connection."); 
    } 
} 

private void toast(String message) { 
    Toast.makeText(WebView.this, message, Toast.LENGTH_LONG).show(); 
} 

private boolean isOnline() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    return (netInfo != null && netInfo.isConnected()); 
} 

@Override 
public void onBackPressed() { 
    if(webView.canGoBack() == true) { 
     webView.goBack(); 
    } else { 
     WebView.super.onBackPressed(); 
    } 
} 
} 
+3

Folgen Sie dieser Frage: http://stackoverflow.com/questions/6077141/how-to-go-back-to-vorherige-Seite-wenn-zurück-Taste-ist-gedrückt-in-webview –

+0

Ich schlage vor, Sie nicht die gleiche Frage, danke zu posten. –

+0

Frage gleich, aber einige Code ist anders –

Antwort

1

Versuchen Sie dieses Add keydown

@Override 
public void onBackPressed() { 

    if (webview.canGoBack()) { 
     webview.goBack(); 
    } else { 
     finish(); 
    } 


} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Display confirmation here, finish() activity. 
     if (webview.canGoBack()) { 
      webview.goBack(); 
     } else { 
      finish(); 
     } 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
    } 
+0

Es ist nicht Arbeit, ich habe bereits versucht, diesen Code –

+0

Ich arbeite Ihr Code funktioniert gut ... es gibt kein Problem .. können Sie so anmelden, wenn Sie zurück drücken –

1

Überprüfen Sie diesen Code, dies hilft Ihnen

@Override 
public void onBackPressed() 
{ 
    if(webView.canGoBack()){ 
     webView.goBack(); 
    }else{ 
     new AlertDialog.Builder(this) 
       .setIcon(android.R.drawable.ic_dialog_alert) 
       .setTitle("Exit!") 
       .setMessage("Are you sure you want to close?") 
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
       { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         finish(); 
        } 

       }) 
       .setNegativeButton("No", null) 
       .show(); 
     /*Intent intent = new Intent(HomeActivity.this, SelectionActivity.class); 
     startActivity(intent); 
     finish();*/ 
    } 
} 
Verwandte Themen