如何在android中按回按钮后停止finish()方法?

问题描述:

我可以检查完成一些条件()如何在android中按回按钮后停止finish()方法?

如果条件是成功的,继续返回到之前

否则,停止完成,并留在当前的活动?

另一种选择是,重写你的活动的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销毁的行为如何。

您可以在您的活动覆盖onBackPressed()赶“回”新闻发布会。如果您在某些情况下不想完成该活动,请不要通过该方法拨打super.onBackPressed()

但是,可以肯定你打电话super.onBackPressed()如果条件不满足。

+0

我第二是....或者您也可以拨打this.finish()内onBackPressed()而不是super.onBackPressed() – drulabs 2012-04-15 07:08:38

+0

@KKD'super.onBackPressed()'在蜂窝前版本上调用'finish()',但在Honeycomb后支持'Fragment'(在支持包中)。最好调用'super'来避免意外行为,除非这是你的意图。 – 2012-04-15 07:21:28

+0

我不知道......谢谢杰森。 – drulabs 2012-04-15 18:50:56

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 
} 
+0

此代码不能编译。此外,请避免使用仅有代码的答案,而应尝试将解决方案解释为使用代码作为示例。 – 2017-01-05 10:22:19