Android:从Fragment更改ActionBar菜单项

Jos*_*osh 15 android android-fragments android-actionbar

任何人都可以提供一个快速示例,说明如何根据片段中发生的事情更改"活动"操作栏的内容?我的意图:

普通菜单项 - >片段中的某些内容被移动 - >菜单项更改为保存/放弃按钮.

我的第一个冲动是在活动和片段中设置广播接收器以进行串扰,但我不确定这是否正确.

Sre*_*ick 22

片段可以更改操作栏中的菜单.为此,你必须在fragment的oncreate()using方法中添加必要的标志setHasOptionsMenu(true);

加载片段后,您就会onCreateOptionsMenu(Menu menu, MenuInflater inflater)像在活动中一样打电话.然后对菜单进行必要的更改.

将菜单保存为片段中的全局菜单,每当您想要进行更改时,请应用它.


Chr*_*acy 7

以下适用于我.我有一个ListView.MultiChoiceModeListener在Fragment 中实现的自定义类:

public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
    // Choose the correct Action Bar menu to display
    int menu = myCondition == true ? R.menu.my_default_menu : R.menu.my_menu_2;

    // Configure to use the desired menu
    mode.getMenu().clear();
    MenuInflater inflater = getActivity().getMenuInflater();
    inflater.inflate(menu);
}
Run Code Online (Sandbox Code Playgroud)

鉴于您如何检测到"片段中的某些内容已经移动",扩展ListView.MultiChoiceModeListener可能对您无效,但希望这说明了如何更改菜单.关键是访问ActionMode实例.