8

我有一个标题栏(有点像菜单)和 4 个片段(MAIN、A、B、C),其中 MAIN 应该是 backstack 的“主/根”片段。

我遇到的问题是,当用户通过菜单进入例如 MAIN > A > B > C 时。如果我只是使用 backstack,它将以我不想要的相反顺序进行。无论用户如何导航到这 3 个之一,我都需要返回按钮才能返回 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;
}
4

1 回答 1

4

您的堆栈必须最多包含 2 个片段

Main 是可见的 Main 是 onBackstack / AorBorC 是可见的。用户单击后退 ==> Main 可见。用户点击返回 ==> 应用程序结束

我想 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您的活动的方法。

于 2013-01-29T17:25:56.653 回答