Android: onCreateOptionsMenu is called but actionbar menu isn't updated in fragment
我正在使用带有多个片段的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | switch (index) { case 0: if (checkinFragment == null) { checkinFragment = new CheckinFragment(); ft.add(R.id.main_container, checkinFragment,"0"); } else { ft.show(checkinFragment); } break; case 3: if (jianGuanFragment == null) { jianGuanFragment = new JianGuanFragment(); ft.add(R.id.main_container, jianGuanFragment,"3"); } else { ft.show(jianGuanFragment); } break; } ft.commitAllowingStateLoss(); |
每个片段的
步骤:
1.首次进入活动时,显示
2.然后切换到
3.但是,当切换回第一个片段(
从日志中,我知道每次切换到该片段时都会调用该片段中的
onCreateOptionsMenu被调用,但操作栏菜单未更新。
有人可以帮助我吗?非常感谢。
编辑1:在onCreateOptionsMenu中添加代码:
(1)在checkinFragment
中
1 2 3 4 5 6 7 8 | @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); LogUtils.e("TAG","CheckinFragment onCreateOptionsMenu"); menu.clear(); inflater.inflate(R.menu.menu_setting, menu); } |
jianGuanFragment中的
(2)
1 2 3 4 5 6 7 8 | @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); LogUtils.e("TAG","JianGuanFragment onCreateOptionsMenu"); menu.clear(); inflater.inflate(R.menu.menu_jianguan, menu); } |
编辑2:我使用工具栏,而不是旧的操作栏。
最后我找到了解决方法:
每次输入片段时,再次将工具栏重新设置为ationbar。
1 2 3 4 5 6 7 8 9 10 | @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if (!hidden) { AppCompatActivity compatActivity = (AppCompatActivity) mActivity; mToolbar = (Toolbar) compatActivity.findViewById(toolbarId); compatActivity.setSupportActionBar(mToolbar); } } |
尝试一下
1)在checkinFragment
中
1 2 3 4 5 6 7 | @Override public void onPrepareOptionsMenu(Menu menu) { menu.clear(); LogUtils.e("TAG","CheckinFragment onCreateOptionsMenu"); getActivity().getMenuInflater().inflate(R.menu.menu_setting, menu); super.onPrepareOptionsMenu(menu); } |
使用
编辑:
如果要从
希望有帮助!!!!