2012-11-03 108 views
8

我有一个标题栏(有点像菜单)和4个片段(MAIN,A,B,C),MAIN应该是其中的'main/root'片段。Android片段导航和backstack

问题我有是当用户通过菜单去例如MAIN> A> B> C. 如果我只是使用backstack它会按相反的顺序,我不想。 我需要后退按钮返回主再好用户导航到那些3.

enter image description here

我当前的代码之一(这是错误的,它退出应用程序切换时不在主与当前片段从其它非主要片段)看起来像这样:

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当前显示并用用户选择的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