我有一个Navigation Drawer
有 5 个项目。如果用户选择一个项目,我现在正在加载相应的项目Fragment
,FrameLayout
如果用户拉出Navigation Drawer
并选择与以前相同的项目,我不应该Fragment
再次加载相同的项目,所以我正在保存选定的位置,如果之前选择的位置等于当前选择我只是关闭Navigation Drawer
如下:
String title = null;
invalidateOptionsMenu();
android.support.v4.app.Fragment fragment = null;
if (position == getPrevSelectedItem()) {
// Already selected fragment is being displayed
} else {
switch (position) {
case Numerics.ZERO:
fragment = new DashBoardFragment();
title = fragment.getClass().getSimpleName();
break;
case Numerics.ONE:
break;
case Numerics.TWO:
break;
case Numerics.THREE:
break;
case Numerics.FOUR:
break;
default:
break;
}
if (fragment != null) {
showFragment(fragment, title);
}
setSelectedItem(position);
}
我通过添加来添加片段,backstack
以便为上一个片段提供向后导航,如下所示:
if (fragment != null) {
String backStateName = fragment.getClass().getName();
mFragmentManager = getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.dashboard_container, fragment);
mFragmentTransaction.addToBackStack(backStateName);
mFragmentTransaction.commit();
}
问题是:
如果我选择第 3 项,然后选择第 4 项,如果我返回之前的选择仍然是 4,但我显示Fragment
的是第 3 项。Navigation Drawer
因此,如果我再次从Fragment
负载中选择 Item no:3 。这个怎么解决??
编辑:
public int getPrevSelectedItem() {
return selectedItem;
}
public void setSelectedItem(int selectedItem) {
this.selectedItem = selectedItem;
}