我有一个标题栏(有点像菜单)和4个片段(MAIN,A,B,C),MAIN应该是后台堆栈的“主/根”片段。
我遇到的问题是当用户通过菜单进行例如MAIN> A> B> C。 如果我只是使用backstack,它将以相反的顺序进行,我不想要。 无论用户如何导航到其中一个,我都需要返回按钮返回MAIN。
我当前的代码(这是错误的,当它不在MAIN中时退出应用程序而当前片段从其他非MAIN片段切换)看起来像这样:
private void SwitchFragment(Fragment pFragment)
{
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.main_fl_fragmentcontainer, pFragment);
if (_CurrentFragment == _Frag_Main)
ft.addToBackStack(null);
ft.commit();
_CurrentFragment = pFragment;
}
答案 0 :(得分:4)
您的筹码最多必须包含2个片段
主要是可见的 主要是onBackstack / AorBorC是可见的。 用户点击返回==>主要是可见的。 用户点击返回==>申请结束
我认为A / B / C显示在同一视图中,所以在这种情况下,
当用户点击您的菜单时,您必须检查当前是否显示A / B / C并将其替换为用户选择的那个。
private void displayFragment(Fragment pFragment) {
Fragment fr = getSupportFragmentManager()
.findFragmentById(R.id.main_fl_fragmentcontainer);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.main_fl_fragmentcontainer, pFragment);
if (_CurrentFragment == _Frag_Main) {
ft.addToBackStack(null);
}
ft.commit();
_CurrentFragment = pFragment;
}
可以覆盖您活动的OnBackPressed
方法。