1

我可以检查finish()中的一些条件吗

如果条件成功,则继续返回上一个

否则,停止完成,并保持当前活动?

4

4 回答 4

8

您可以通过覆盖onBackPressed()您的活动来捕捉“返回”新闻事件。如果您有一些不想完成活动的情况,请不要调用super.onBackPressed()该方法。

super.onBackPressed()但是,如果不满足该条件,请确保您确实打电话。

于 2012-04-15T06:53:30.043 回答
5

另一种选择是,覆盖您的活动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 想要完成()时都会调用此函数,例如,您旋转手机并重新创建 Activity。在这种情况下,您的旧 Activity 将无法完成(),我不确定 Activity 销毁的行为将如何。

于 2012-04-15T09:01:23.153 回答
2
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();
}
}
于 2012-04-15T09:07:56.523 回答
0
@Override
public void onBackPressed() {
    if (success)
        super.onBackPressed();
    else // Do what you want to do
}
于 2017-01-05T07:55:50.770 回答