我正在创建 LoginActivity-> OtherActivity-> 片段 1-> Fragment_2。当我单击"后退"按钮时,我又回到了Fragment_1当我再次单击"后退按钮"时,我处于登录活动中,为什么?
我想在片段 _1 中单击后退按钮后返回主活动,然后在下次单击后退按钮(在主活动中)后返回主屏幕,我想回到主屏幕
我该怎么做?
在主活动中,我有:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0 ) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
添加片段时调用addToBackStack
。例如:
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.container, fragment);
ft.addToBackStack(backStateName);
ft.commit();
另外,在启动 OtherActivity 之前,请在您的 LoginActivity 上调用finish()
。
首先,在导航到 OtherActivity 时从堆栈中删除 LoginActivity。之后,在呈现片段时使用@ahomphophone的答案。之后,后退堆栈应按预期工作,而无需覆盖"onBackPressed"。
注意:您提供的堆栈上没有主活动。
更新:如果您想留在其他活动中,请使用此代码
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0 ) {
getFragmentManager().popBackStack();
}
}