的Android片段导航和返回堆栈(Android fragments navigation and

2019-07-03 13:18发布

我有一个标题栏(有点像菜单)和4个片段(MAIN,A,B,C)从所述主应为返回堆栈“主/根”片段。

问题我已经是当通过菜单用户进入例如MAIN> A> B> C,如果我只是使用堆栈中它会在我不想相反的顺序去。 我需要后退按钮返回主无论用户如何导航到这3个中的一个。

我当前的代码(这是错误的,它退出应用程序时不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;
}

Answer 1:

您的堆栈必须包含在最大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您的活动的方法。



文章来源: Android fragments navigation and backstack