Android,finish()关闭应用程序而不是活动

时间:2013-10-18 12:31:37

标签: android android-activity activity-finish

我为结果调用了一个活动:

private static final int CODE_LOGIN = 0;
private static final int CODE_DETAILS = 1;

private void callDetailsActivity() {
    Intent switchToDetailsActivity = new Intent(getApplicationContext(), Details.class);
    switchToDetailsActivity.putExtra(TAG_ID, details.get(TAG_ID));
    startActivityForResult(switchToDetailsActivity, CODE_DETAILS);
}

现在在我的 Details.class 中,我打电话回到之前的活动:

@Override
public void onBackPressed() {
    setResult(RESULT_OK);
    super.onBackPressed();
}

然后我的onActivityResult()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == CODE_LOGIN) {
                // This is for my other Activity, where the "return" works
        }
    }
    updateOffers();
}

但是回到我之前的课程时,应用程序关闭时没有任何错误日志。当我按下主页按钮转到我之前的应用程序时,我可以转到我的应用程序,然后我在之前的活动中,但这肯定不是它应该工作的方式。

我也尝试过不要更改onBackPressed(),或者只是将finish()写入onBackPressed(),但没有任何效果。

我没有设置android:noHistory="true"

使用我的其他Activity(使用相同的代码),它完美地工作(CODE_LOGIN)。

有人能帮助我吗?

3 个答案:

答案 0 :(得分:4)

也许你已经在AndroidManifest中声明了第一个活动:android:noHistory =“true”?

答案 1 :(得分:2)

我发现了自己的错误。 在我的代码深处,我不小心称为finish(),所以在全局中我调用了finish()两次,这导致关闭应用程序。

感谢您的帮助以及使用super.onBackPressed()

的建议

答案 2 :(得分:1)

setResult(RESULT_OK, returnToOffers);更改为setResult(RESULT_OK);并删除returnToOffers意图。我还建议将finish()替换为super.onBackPressed(),以便将来兼容。

就像在Android Lik-M-Aid(或者下一个版本)中一样,当用户使用后退按钮取消活动时,他们决定做一些特殊的红色发光效果,您不必更新您的应用支持它。