对话框片段更改所有其他选项菜单

时间:2016-03-12 11:44:07

标签: android android-dialogfragment android-coordinatorlayout

我的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);
}

1 个答案:

答案 0 :(得分:0)

在第二个片段中调用invalidateOptionsMenu()

Docs

  

声明选项菜单已更改,因此应重新创建。该   onCreateOptionsMenu(Menu)方法将在下次需要时调用   待显示。

在SecondFragment中:

 @Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    getActivity().invalidateOptionsMenu();
}