这是在调用中使用组合startActivityForResult
和覆盖的完美选择。onActivityResult
Activity
假设你有Activity A
, which 开始Activity B
(我们不能回到它), which 开始Activity C
:
Activity A
会叫Activity B
你现在的样子。Activity B
但是,将调用startActivityForResult(Intent, int)
而不是仅仅调用startActivity(Intent)
。这样,当我们从 中返回时Activity C
,我们可以调用finish()
并Activity B
返回到Activity A
,如下所示:
public class ActivityB extends Activity {
private static final int REQUEST_CODE_ACTIVITY_C = 1001;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == REQUEST_CODE_ACTIVITY_C) finish(); // If coming back from Activity C, finish()
}
private void openActivityC(){
Intent intent = new Intent(this, ActivityC.class);
startActivityForResult(intent, REQUEST_CODE_ACTIVITY_C);
}
}
现在,当您调用时openActivityC()
,您可以确保onActivityResult()
在从返回时调用它Activity C
,从而允许您结束Activity
并返回到Activity A
.
您可以为状态提供更具体的操作(例如设置/检查结果代码(例如,如果它取消 ( Activity.RESULT_CANCELED
) 或成功 ( Activity.RESULT_OK
)),以更好地确定调用Activity
应该做什么。
希望这有助于解释一下。
编辑:也是事后的想法,如果你没有机会回到活动 B,那么@Kay 在触发活动 C 的 Intent 后调用 finish() 的解决方案将是最简单的方法。