Android onActivityResult中的完成活动不起作用
我有两种活动必须一起生活或一起死去。基本上,AlphaActivity会做一些工作,然后为BetaActivity发送一个意图(Android onActivityResult中的完成活动不起作用,android,android-intent,android-activity,back,activity-finish,Android,Android Intent,Android Activity,Back,Activity Finish,我有两种活动必须一起生活或一起死去。基本上,AlphaActivity会做一些工作,然后为BetaActivity发送一个意图(startActivityForResult())。当BetaActivity完成时,我希望它为GammaActivity分派一个意图(startActivity()),然后对其自身调用finish())。完成后,我希望AlphaActivity的onActivityResult()方法能够被调用,但这似乎从未发生过。我的设计是这样的,在AlphaActivity的on
startActivityForResult()
)。当BetaActivity完成时,我希望它为GammaActivity分派一个意图(startActivity()
),然后对其自身调用finish()
)。完成后,我希望AlphaActivity的onActivityResult()
方法能够被调用,但这似乎从未发生过。我的设计是这样的,在AlphaActivity的onActivityResult()
中,我调用finish()
。我的计划是,一旦达到GammaActivity,用户就无法返回AlphaActivity或BetaActivity。但目前,后退按钮确实会将用户带到AlphaActivity
我确实有一些想法,为什么它不起作用,但在这里讨论它们是毫无意义的,因为我对什么可能真正起作用感兴趣
编辑:
代码都是非常标准的东西:
从阿尔法内部
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();
}
}
}
从内部测试版:
if (success) {
startGammaActivity();
finish();
}
在我看来,你应该遵循这一点
您不应该在BetaActivity上启动GammaActivity,因为AlphaActivity-onActivityResult无法正常工作。您没有调用setResult()
或者,如果您永远不需要从
BetaActivity
返回到AlphaActivity
,那么在这两个活动清单中放置android:noHistory=true
我想您只需要:
if (success) {
startGammaActivity();
setResult(Activity.RESULT_OK); //add this
finish();
}
你所描述的应该有用。你能把代码贴在你开始BetaActivity然后完成它的地方吗?你需要用BetaActivity的结果做些什么吗?为什么不能
AlphaActivity
当它启动BetaActivity
时,它只是finish()。我接受了另一个,因为看起来他是第一个+你做得对,我也投票支持他。顺便说一下,如果您曾经在onBackpress中设置过结果,那么您必须在调用super()之前设置结果,谢谢。我不知道。
if (success) {
startGammaActivity();
setResult(Activity.RESULT_OK); //add this
finish();
}