【发布时间】:2014-12-11 07:34:58
【问题描述】:
这是我使用导航抽屉显示片段的方式:
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new Fragment0();
break;
case 1:
fragment = new Fragment1();
break;
case 2:
fragment = new Fragment2();
break;
case 3:
fragment = new Fragment3();
break;
case 4:
fragment = new Fragment4();
break;
case 5:
fragment = new Fragment5();
}
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment)
.addToBackStack(null)
.commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(drawerll);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
假设如果用户导航到 Fragment 2-> Fragment 5-> Fragment3.
如果用户点击 back button 我需要有descending order 并且在每个片段上我显示片段的name 当他去那个特定的fragment 即:
Fragment 3-> Fragment 5-> Fragment2.
这是我尝试过的:
第一种方法:
FragmentManager fm = getSupportFragmentManager();
int count = fm.getBackStackEntryCount();
for(int i = 0; i < count; ++i) {
fm.popBackStackImmediate();
}
第二种方法:
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
我无法让这个工作**(即..我无法将它移回我来自的片段**)并且无法根据后台堆栈显示片段的名称
非常感谢任何帮助。
【问题讨论】:
-
This 会有所帮助
-
@SweetWishershi-我在这一行遇到错误 Fragment fragment = fragManager.getFragments().get(count>0?count-1:count);声明 getFragments 未为 Fragmentmanager 定义
-
我认为你的后台工作正常。您可以以相同的方式导航回去。如果您想获取堆栈计数,可以使用 getSupportFragmentManager().getBackStackEntryCount() 方法
-
是的,但是如何设置标题,因为单击后退按钮时标题没有改变
-
你需要使用
getSupportFragmentManager()即v4.Fragment
标签: android android-fragments fragment-backstack