finish() でいくつかの状態を確認できますか
条件が成功の場合、前に戻る
そうでなければ、フィニッシュを止めて、現在の活動を続けますか?
アクティビティをオーバーライドすることで、「バック」プレスイベントをキャッチできonBackPressed()
ます。アクティビティを終了したくない状態がある場合はsuper.onBackPressed()
、そのメソッドを呼び出さないでください。
super.onBackPressed()
ただし、その条件が満たされない場合は、必ず電話してください。
別のオプションは、アクティビティのオーバーライドですfinish()
@Override
public void finish() {
if( bLetsFinish ){
super.finish(); //This will finish the activity and take you back
}else{
//Do whatever it is that you want to do
return;
}
}
ただし、この関数は、Activity が finish() するたびに呼び出されることに注意してください。たとえば、携帯電話を回転させて、Activity を再作成します。この場合、古いアクティビティは finish() にならず、アクティビティの破壊の動作がどのようになるかわかりません。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(success){
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
上記の方法または以下の方法を使用してタスクを実行できます
public void onBackPressed(){
if(success){
finish();
}
}
@Override
public void onBackPressed() {
if (success)
super.onBackPressed();
else // Do what you want to do
}