在 Android 中动态启用/禁用菜单项

Ram*_*mky 2 android fragment menuitem

我正在开发一个应用程序,其中使用可滑动选项卡 - 使用 FragmentActivity 和每个选项卡各自的片段实现。

现在我在每个片段(选项卡)中都有复选框。当选中复选框时,我需要在应用程序的操作栏中启用几个菜单项(例如发送/共享/删除),并在取消选中复选框时禁用这些菜单。

我们怎样才能做到这一点?任何指示将不胜感激。

——拉姆基

小智 6

在运行时更改菜单项

系统调用onCreateOptionsMenu()后,它会保留您填充的Menu的实例,并且不会再次调用onCreateOptionsMenu(),除非菜单由于某种原因失效。但是,您应该仅使用 onCreateOptionsMenu() 创建初始菜单状态,而不是在活动生命周期中进行更改。

如果要根据 Activity 生命周期中发生的事件修改选项菜单,可以在 onPrepareOptionsMenu() 方法中执行此操作。此方法将当前存在的 Menu 对象传递给您,以便您可以对其进行修改,例如添加、删除或禁用项目。(片段还提供 onPrepareOptionsMenu() 回调。)

参考文档

@Override
 public boolean onPrepareOptionsMenu (Menu menu) {
     if (condition_true)
         menu.getItem(item_index).setEnabled(false);
     return true;
 }
Run Code Online (Sandbox Code Playgroud)