我的Android应用程序包含一个主要活动,两个Fragment和一个Dialog Fragment。
主要活动有一个选项菜单。
Main Fragment使用主要活动的选项菜单。
第二个片段有另一个选项菜单。
从第二个片段,我可以打开包含的Dialog Fragment 另一套选项菜单。
但是当关闭Dialog Fragment时,所有其他片段和活动的选项菜单都会更改为Dialog Fragment。
MainActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return super.onCreateOptionsMenu(menu);
}
SecondFragment.java
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
getActivity().getMenuInflater().inflate(R.menu.fragment_second, menu);
super.onCreateOptionsMenu(menu, inflater);
}
MyDialogFragment.java
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
getActivity().getMenuInflater().inflate(R.menu.fragment_dialog, menu);
super.onCreateOptionsMenu(menu, inflater);
}
答案 0 :(得分:0)
在第二个片段中调用invalidateOptionsMenu()
。
Docs:
声明选项菜单已更改,因此应重新创建。该
onCreateOptionsMenu(Menu)
方法将在下次需要时调用 待显示。
在SecondFragment中:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().invalidateOptionsMenu();
}