如何在片段和活动中使用 onBackPressed()?



我正在创建 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();
}
}

最新更新