我有一对必须共同生活或死亡的活动。基本上AlphaActivity会做一些工作,然后为BetaActivity调度一个intent(startActivityForResult()
)。当BetaActivity完成后,我希望它为GammaActivity调度一个intent(startActivity()
),然后自己调用finish()
。完成后我希望调用AlphaActivity的onActivityResult()
方法,但这似乎永远不会发生。我的设计是在AlphaActivity的onActivityResult()
内部,我称之为finish()
。我的计划是,一旦达到GammaActivity,用户就无法返回AlphaActivity或BetaActivity。但目前后退按钮确实将用户带到了AlphaActivity。
我确实有一些想法,为什么它不起作用,但在这里讨论它们毫无意义,因为我对可能实际工作的内容感兴趣。
编辑:
代码都非常标准:
从Alpha内部
private void startBetaActivity() {
Intent intent = new Intent(this, BetaActivity.class);
startActivityForResult(intent, Constant.EXIT_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == Constant.EXIT_CODE) {
this.finish();
}
}
}
从Beta内部开始:
if (success) {
startGammaActivity();
finish();
}
答案 0 :(得分:6)
我认为你只需要:
if (success) {
startGammaActivity();
setResult(Activity.RESULT_OK); //add this
finish();
}
答案 1 :(得分:5)
在我看来,你应该遵循这个,
您不应该在BetaActivity上启动GammaActivity,因为AlphaActivity onActivityResult将无法正常工作。
答案 2 :(得分:4)
您尚未调用setResult()
if (success) {
startGammaActivity();
setResult(RESULT_OK);
finish();
}
或者,如果您永远不需要从BetaActivity
返回AlphaActivity
,那么在两个活动中就显示了android:noHistory=true