我有一个使用库https://github.com/mikepenz/MaterialDrawer
构建的导航抽屉的活动我想从导航抽屉中选择4个不同的项目来加载4个不同的页面。
我决定在导航抽屉中为每个项目使用片段,因此当按下任何项目时,会创建该选项的新片段并显示给用户。
我想要的是,无论用户当前处于哪个片段,或者他来自哪个片段,每当他按下后退按钮时,他都会返回原始活动。
这是我到目前为止的代码,但显然Fragment Backstack没有更新。
result = new DrawerBuilder().withSelectedItem(-1)
.withActivity(this)
.withToolbar(toolbar)
.withAccountHeader(headerResult)
.addDrawerItems(
item1,item2,item3,item4
)
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
result.setSelection(position,false);
clearStack();
switch (position) {
case 1:
fragment = new admin_fragment_data_entry();
break;
case 2:
fragment = new admin_fragment_data_edit();
break;
case 3:
break;
case 4:
break;
}
initiateFragment();
return false;
}
}
)
.build();
@Override
public void onBackPressed() {
int count = getFragmentManager().getBackStackEntryCount();
//handle the back press :D close the drawer first and if the drawer is closed close the activity
if (result != null && result.isDrawerOpen()) {
result.closeDrawer();
}
else if (count == 0) {
super.onBackPressed();
//additional code
}
else {
getFragmentManager().popBackStack();
}
}
private void initiateFragment(){
if (fragment != null) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.addToBackStack(null);
ft.replace(R.id.container_body, fragment);
ft.commit();
}
}
private void clearStack(){
int count = getFragmentManager().getBackStackEntryCount();
while(count > 0){
getFragmentManager().popBackStack();
count--;
}
}
任何帮助都将受到高度赞赏。
另外,我应该在这里使用片段吗?或者我应该从导航抽屉中为4种不同的选项开始4种不同的活动?
答案 0 :(得分:0)
您是否使用正确的片段管理器来计算背斜堆?
我注意到你班级的其他部分你正在使用getSupportFragmentManager。