如何设置操作栏菜单组的可见性?

jam*_*esc 9 android actionbarsherlock

UPDATE

最初我使用ActionBarSherlock我已经使用原生的android操作栏创建了一个全新的项目来测试这个,我仍然遇到同样的问题.

我成功地显示/隐藏了项目而不是组.我很快得出结论,ActionBar中存在一个错误,无法以编程方式设置组的可见性

更新结束

给出以下菜单访问Group时,我得到一个空指针异常

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:id="@+id/action_settings"
        android:title="@string/settings"
        android:orderInCategory="100"
        android:showAsAction="never"/>

        <group android:id="@+id/mnu_text_group"
           android:visible="false">
            <item android:id="@+id/mnu_text_type"
                android:enabled="true" 
                android:visible="true"
                android:icon="@drawable/ic_action_text_icon"
            android:showAsAction="always"> 
            </item>
            <item android:id="@+id/text_color"
                android:enabled="true" 
                android:visible="true" 
                android:showAsAction="always" 
                android:icon="@drawable/ic_action_color_line">
            </item>
        </group>        
    <item android:id="@+id/mnu_images"
...
Run Code Online (Sandbox Code Playgroud)

在我所拥有的相关活动的onPrepareOptionsMenu中

public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem mnuTextGroup = menu.findItem(R.id.mnu_text_group);
    mnuImage.setEnabled(mEnableImageMenu);
    mnuTextGroup.setVisible(false);
    ...
Run Code Online (Sandbox Code Playgroud)

调用mnuTextGroup.setVisible(false);引发空指针异常

但是,通过更改查找方法以查找组内的项目工作正常,MenuItem mnuTextGroup = menu.findItem(R.id.mnu_text_type);但显然这仅适用于特定项目.我知道组的设计正是为了这个目的,能够设置组的可见性并启用/禁用组内的所有项目,但我一直无法找到以编程方式执行此操作的方法.

jam*_*esc 37

终于找到了我需要使用setGroupVisible()传递给onPrepareOptionsMenu()方法的菜单对象的方法的解决方案

这对我有用

代替

MenuItem mnuTextGroup = menu.findItem(R.id.mnu_text_group);
mnuImage.setEnabled(mEnableImageMenu);
mnuTextGroup.setVisible(false);
Run Code Online (Sandbox Code Playgroud)

这就是我需要的

menu.setGroupVisible(R.id.mnu_text_group, false);
Run Code Online (Sandbox Code Playgroud)