Android,finish()关闭应用程序的活动

deg*_*ude 5 android activity-finish android-activity

我将结果称为活动:

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);
}
Run Code Online (Sandbox Code Playgroud)

现在在我的Details.class中,我打电话回到上一个活动:

@Override
public void onBackPressed() {
    setResult(RESULT_OK);
    super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)

然后是我的 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();
}
Run Code Online (Sandbox Code Playgroud)

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

我也试过不改变onBackPressed(),或者干脆写finish()onBackPressed(),但毫无效果.

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

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

有人能帮助我吗?

Ten*_*r04 1

更改setResult(RESULT_OK, returnToOffers);setResult(RESULT_OK);并删除 returnToOffers 意图。我还建议替换finish()super.onBackPressed()以实现未来的兼容性。

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