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

时间:2015-08-22 13:36:58

标签: android android-lifecycle

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

我可以理解,我不能依赖活动A保持活着等,但每次按下后退按钮都会起作用,而onBackPressed()每次都会失败。我假设onBackPressed并按下按钮做了同样的事情。

感谢所有帮助!

启动活动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);
    }
}

2 个答案:

答案 0 :(得分:2)

就我而言,我没有在true中返回onOptionsItemSelected。这导致父母活动onCreate()被调用。

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

答案 1 :(得分:0)

您可能希望查看执行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