2016-08-03 7 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を/前のページへの戻る方法ボタンを押した場合のWebページの表示 –

+0

同じ質問を投稿しないようにしてください。 –

+0

同じ質問ですがコードが違います –

答えて

1

@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

チェックこのコードをKeyDownイベント追加し、これを試してみてください、これはあなた

@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();*/ 
    } 
} 
関連する問題