Android侧边菜单导航 - 处理碎片

时间:2014-04-26 07:48:21

标签: android android-fragments navigation-drawer

我的应用程序有以下流程:

enter image description here

关键是,我们有一个Activity和一个滑动菜单,用户可以从中选择一个顶级片段(顶级我的意思是当用户按下Back键时,应用程序退出)。

从这些片段中,用户可以导航到另一个片段(例如论坛主题 - >主题详细信息 - >海报个人资料 - >海报的朋友 - >朋友的个人资料),其中返回键有望返回用户到前一个片段的保存状态(例如恢复滚动位置等)。

在这种情况下,我使用:

void addFragment(Fragment f) {
    //add fragment in a transaction, so back key does its thing
    getSupportFragmentManager().beginTransaction().addToBackStack(null)
            .add(R.id.fragment_container, f).commit();
}

如果用户在任何这些片段中打开侧边菜单并选择另一个顶级片段,那么整个后面的堆栈将被新片段替换(当用户按下时,app退出)

在这种情况下,我使用:

void replaceFragment(Fragment f) {
    //remove all fragments and add a top-level one
    getSupportFragmentManager().popBackStackImmediate(null,
            FragmentManager.POP_BACK_STACK_INCLUSIVE);
    getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, f).commit();
}

这被认为是一个很好的导航?在iOS应用程序中,每个顶级片段都会记住它自己的后台堆栈,但这看起来像是一种矫枉过正,所以在顶层交换机上销毁后台就足够了。

1 个答案:

答案 0 :(得分:0)

使用

 private final static String TAG_FRAGMENT = "TAG_FRAGMENT";

并且

 FragmentManager fragmentManager = getSupportFragmentManager(); 
  FragmentTransaction ft = fragmentManager.beginTransaction(); 

ft.replace(R.id.content_frame, new Frag_Yourfrag(), TAG_FRAGMENT );
ft.addToBackStack(null);
ft.commit(); 

享受:)