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
后,我可以看到预期的行为。
好吧,我有点困惑。我有两个活动: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.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
后,我可以看到预期的行为。