Android 在用户在DialogFragment中设置值后更改片段选项菜单

Android 在用户在DialogFragment中设置值后更改片段选项菜单,android,android-fragments,android-dialogfragment,Android,Android Fragments,Android Dialogfragment,我有一个Fragmenta,它在工具栏中显示了一个MenuItemMi。单击Mi,我将向用户显示一个对话框fragmentDf,以设置值V 通过实现回调侦听器接口,我将此值传递给片段A。 一旦设置了值,我想从fragmentA的工具栏菜单中隐藏Mi 我想在片段A的onPause()和onResume()中处理这个问题,但是显示对话框片段不会改变片段的生命周期。我想知道如何解决这个问题 如何实现这一点?我在片段a中使用了一个回调侦听器,该侦听器侦听DialogFragmentDf。设置值V后,将调

我有一个
Fragment
a,它在工具栏中显示了一个
MenuItem
Mi。单击Mi,我将向用户显示一个
对话框fragment
Df,以设置值V

通过实现回调侦听器接口,我将此值传递给片段A。 一旦设置了值,我想从fragmentA的工具栏菜单中隐藏Mi

我想在片段A
onPause()
onResume()
中处理这个问题,但是显示对话框片段不会改变片段的生命周期。我想知道如何解决这个问题


如何实现这一点?

我在片段a中使用了一个回调侦听器,该侦听器侦听DialogFragmentDf。设置值V后,将调用A中的回调方法。在这个方法中,我使用V并设置一个标志来指示V已被设置,然后调用
invalidateOptionsMenu()

请参阅本节以实现您自己的回调。


简单地说,当用户设置值V后Df被解除时,您想隐藏Mi吗?我想您可以尝试使用共享首选项。将标志设置为菜单的活动/非活动状态,并与之比较以显示或隐藏Mi@Mercato是的,我做到了。
public void myCallback(int V){
  //Use V according to my logic
   vIsSet = Boolean.TRUE;
   getActivity().invalidateOptionsMenu();
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
    super.onCreateOptionsMenu(menu,inflater);
    if(vIsSet) {
        menu.removeItem(MENU_ITEM_ID);//item id of Mi
    }
}