私のアプリにはログアウト機能があります。ユーザーがログアウトをクリックすると、ホーム画面に移動します。現在、戻るボタンを押してアプリを終了しています。しかし、私が欲しいのは、戻るボタンの機能と同じように、自動的に(つまりプログラム的に)終了する必要があることです。私はfinish()を呼び出すことで機能を実行することを知っています。しかし、問題はそれが前の活動に行くということです。
7 に答える
onBackPressed()
API レベル 5以降でサポートされています。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
onBackPressed();
}
}
@Override
public void onBackPressed() {
//this is only needed if you have specific things
//that you want to do when the user presses the back button.
/* your specific things...*/
super.onBackPressed();
}
オーバーライドする必要はありませんonBackPressed()
。ユーザーが戻るボタンを押したときにアクティビティがデフォルトで実行するアクションとして既に定義されています。したがってonBackPressed()
、戻るボタンを「プログラムで押す」必要があるときはいつでも呼び出すだけです。
ただし、それは呼び出されるだけになりfinish()
ます;)
戻るボタンの機能と混同していると思います。デフォルトでは、これは単に を呼び出すだけなfinish()
ので、現在のアクティビティを終了するだけです。そのアクティビティの背後に何かがある場合は、その画面が表示されます。
できることは、ログインからアクティビティを起動するときに、CLEAR_TOP フラグを追加して、ログイン アクティビティを終了したときにログイン アクティビティが表示されないようにすることです。
メソッド onBackPressed() をオーバーライドすると便利な場合があります。これは、フラグメントを操作していて、戻るボタンを押すとフラグメント間で変更する場合に、前のフラグメントに戻るためです。
onBackPressed
アクティビティでオーバーライドした後に呼び出します。