onCreate() 使用 onBackPressed 调用,但不是通过按下后退按钮调用

onCreate() called with onBackPressed but not by pressing the back button

好吧,我有点困惑。我有两个活动:Activity A 和 Activty B,我可以很容易地从 A 导航到 B。一旦在 B 处,当我按下物理后退按钮时,Activity B 死了,我就回到了我在 A 离开的地方。但是,如果我改为调用 onBackPressed(),Activity B 死了但是 Activity A 是从头开始创建的(调用了 onCreate())。

我能理解我不能依赖 Activity A 一直活着等等,但每次按下后退按钮都有效,而 onBackPressed() 每次都失败。我假设 onBackPressed 和按下按钮做同样的事情。

感谢所有帮助!

正在启动 Activity B:

 Intent i = new Intent(getActivity(), MailActivity.class);
    Mail m = mMails.get(position);
    i.putExtra(MailFragment.EXTRA_MAIL, m);
    Log.d(TAG, "Mail Packed");
    startActivity(i);

正在尝试从 B 返回 A:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.home:
            getActivity().onBackPressed();
            return false;
        default:
            return super.onOptionsItemSelected(item);
    }
}

您可能想查看在执行 context.startActivity(intent);

时发送的 Intent 标志

您可以设置意图标志

intent.setFlags(FLAGS_GO_HERE | ANOTHER_FLAG_IF_YOU_WANTED);

更多详情:http://developer.android.com/guide/components/tasks-and-back-stack.html

就我而言,我在 onOptionsItemSelected 中没有 return true。这导致父 activity 的 onCreate() 被调用。

onOptionsItemSelected 中添加 return true 后,我可以看到预期的行为。