我现在有一个问题,我有一个
当我这样做时,有几件事情我想设置:
我的导航抽屉布局具有对所有菜单项的
ActionBarActivity
加载一个初始的Fragment
- 原始菜单是在活动中填充的。现在,我有一个导航栏,当选择项目时,会加载不同的片段并将其添加到返回堆栈中。当我这样做时,有几件事情我想设置:
- 将主页设置为向上指示器
- 使主活动的选项菜单无效
- 将片段的has options设置为true
- 确保向上指示器正确地导航回原始片段
我的导航抽屉布局具有对所有菜单项的
onClick
方法,这将触发另一个片段的加载:public void navItemClick(View view) {
switch (view.getId()) {
case R.id.ripSMS:
mNavigationDrawer.toggleHome(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
FragmentTransaction mTrans = getSupportFragmentManager().beginTransaction();
mTrans.replace(R.id.voiceover_frame_layout,new MessageFragment(),"main_ui")
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack("msg").commit();
break;
case R.id.ripEmail:
break;
case R.id.ripSettings:
break;
}
mNavigationDrawer.closeDrawer();
}
toggleHome:
public void toggleHome(boolean show) {
mDrawerToggle.setDrawerIndicatorEnabled(show);
if (!show) {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
} else {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}
}
一旦该项被触发,onCreate
包含了无效代码和选项代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().invalidateOptionsMenu();
setHasOptionsMenu(true);
}
< p > onCreateOptionsMenu
然后填充另一个菜单布局(包含一个名为“设置”的单个项目)。
如上所述,这仅在第一次使用该项加载 Fragment 时部分工作 - 我获得了返回图标,但它也不起作用(这是在 onOptionsItemSelected
中设置的,以检查 home item 按下 - 它什么也不做)。当我按下返回按钮时,它会将我带回正确的位置。然而,如果我导航回来,即使代码运行通过 onCreate
,返回箭头现在也不再显示!
toggle.syncState();
是关键因素,否则汉堡菜单在返回时不可见。 - Wahib Ul Haq