6

我称活动为结果:

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"

对于我的其他活动(使用完全相同的代码),它可以完美运行(CODE_LOGIN)。

有人可以帮助我吗?

4

3 回答 3

4

也许您已经在 AndroidManifest 中将第一个活动声明为 android:noHistory="true"?

于 2013-10-18T13:09:15.710 回答
2

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

感谢您的帮助和使用 super.onBackPressed() 的建议

于 2013-10-18T16:14:03.057 回答
1

更改setResult(RESULT_OK, returnToOffers);setResult(RESULT_OK);摆脱 returnToOffers 意图。我还建议替换finish()super.onBackPressed()将来的兼容性。

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

于 2013-10-18T13:11:24.323 回答