在onActivityResult完成活动不起作用(finish activity in onAct

2019-09-01 02:24发布

我有一对必须死活在一起活动。 基本上AlphaActivity做了一些工作,然后调度意图( startActivityForResult()对于BetaActivity)。 当BetaActivity做,我希望它派遣的意图( startActivity()为GammaActivity,然后调用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();
        }

Answer 1:

我想,你只需要:

if (success) {
        startGammaActivity();
        setResult(Activity.RESULT_OK); //add this
        finish();
}


Answer 2:

在我看来,你应该遵循这一点,

  1. AlphaActivity用于与X请求代码结果开始BetaActivity
  2. BetaActivity做他的工作,然后调用的setResult(Y,Z),并调用finish()
  3. AlphaActivity将与RequestCode X,的ResultCode Y和Z.数据运行onActivityResult如果X和Y是你期望的那些然后开始GammaActivity终于在AlphaActivity调用finish()

你不应该在BetaActivity开始GammaActivity因为AlphaActivity onActivityResult将无法正常工作。



Answer 3:

您还没有叫的setResult()

if (success) {
        startGammaActivity();
        setResult(RESULT_OK);
        finish();
    }

或者,如果您不需要离开回去BetaActivityAlphaActivity然后在这两个活动舱单,把android:noHistory=true



文章来源: finish activity in onActivityResult does not work