2016-08-03 65 views
0

我有一個應用程序,我有一個WebView,我顯示一些網站。它的工作原理是,點擊網頁中的鏈接進入我的應用程序內部網站的下一頁。但是當我點擊手機的後退按鈕時,它會直接進入我的應用程序。我想回到網站上的前一頁。我怎樣才能做到這一點?爲什麼後退按鈕無法使用此代碼?

這是我的代碼。

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

關注這個問題: http://stackoverflow.com/questions/6077141 /如何返回到上一頁如果後退按鈕被按下在webview –

+0

我建議你不要發表相同的問題,謝謝。 –

+0

問題相同,但有些代碼不同 –

回答

1

試試這個添加的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

這不是工作,我已經試過這個代碼 –

+0

我正在工作你的代碼工作正常...沒有問題..你可以如此登錄時,後按 –

1

檢查這個代碼,這是幫你

@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();*/ 
    } 
} 
相關問題