【问题标题】:Disable Android menu group禁用 Android 菜单组
【发布时间】:2011-07-20 14:08:21
【问题描述】:

我尝试使用以下代码禁用菜单组,但它不起作用,菜单项仍然启用。你能告诉我有什么问题吗?

res/menu/menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@+id/a" android:title="A"></item>
  <item android:id="@+id/b" android:title="B">
    <menu>
      <item android:id="@+id/c" android:title="C" />
      <item android:id="@+id/d" android:title="D" />
      <group android:id="@+id/group_1">
        <item android:id="@+id/e" android:title="E" />
        <item android:id="@+id/f" android:title="F" />
      </group>
    </menu>
  </item>
</menu>

Java:

public boolean onPrepareOptionsMenu (Menu menu) {
    menu.setGroupEnabled (R.id.group_1, false); // does not work
    menu.setGroupVisible (R.id.group_1, false); // does not work either
    return super.onPrepareOptionsMenu (menu);
}

public boolean onCreateOptionsMenu (Menu menu) {
    getMenuInflater ().inflate (R.menu.menu, menu);
    return true;
}

【问题讨论】:

    标签: java android menu


    【解决方案1】:

    感谢user432209的信息,这里是答案:

    menu.findItem (R.id.b).getSubMenu ().setGroupVisible (R.id.group_1, false);
    

    【讨论】:

      【解决方案2】:

      我不确定你是否可以使用这样的组,但试试这个(值得一试):

      MenuItem item = menu.findItem(R.id.group_1);
      item.setVisible(true);
      item.setEnabled(false);
      

      编辑:您的问题是您的菜单结构以及由于使用父/子菜单而在onCreateOptionsMenu 中创建菜单的方式。

      您为父菜单而不是子菜单创建了一个菜单,这就是调用 setGroupEnabledsetGroupVisible 失败的原因。您需要在 onCreateOptionsMenu 中创建一个代表孩子的对象,以便将该对象传递到 onPrepareOptionsMenu 并且您的代码可以正常工作。

      【讨论】:

      • 我加了(没什么特别的)。
      • 当它根本不起作用时,为什么这个答案被标记为问题的答案?
      • 你为什么提出一个错误的答案。这六个赞成票应该被删除
      【解决方案3】:

      上述解决方案效果很好,但应该写在onCreateOptionsMenu中,下面是它的例子:

      @Override
      public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
          // Inflate the menu
          inflater.inflate(R.menu.menu, menu);
      
          // Make the menu item visible and enable it.
          MenuItem item = menu.findItem(R.id.group_1);
          item.setVisible(true);
          item.setEnabled(false);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-21
        • 2013-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多