我为结果调用了一个活动:
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)。
有人能帮助我吗?
答案 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(或者下一个版本)中一样,当用户使用后退按钮取消活动时,他们决定做一些特殊的红色发光效果,您不必更新您的应用支持它。