【发布时间】:2014-02-05 20:05:17
【问题描述】:
更新
最初我使用的是 ActionBarSherlock,后来我使用原生 android 操作栏创建了一个全新的项目,只是为了测试这一点,但我仍然遇到同样的问题。
我成功地显示/隐藏了项目但不是组。我很快得出结论,ActionBar 中存在错误,无法以编程方式设置组的可见性
更新结束
给定以下菜单访问组时出现空指针异常
<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"
...
在我拥有的相关活动的 onPrepareOptionsMenu 中
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem mnuTextGroup = menu.findItem(R.id.mnu_text_group);
mnuImage.setEnabled(mEnableImageMenu);
mnuTextGroup.setVisible(false);
...
对mnuTextGroup.setVisible(false); 的调用引发空指针异常
但是,通过更改 find 方法以在组中查找项目可以正常工作,例如MenuItem mnuTextGroup = menu.findItem(R.id.mnu_text_type);但显然这仅适用于特定项目。我知道群组正是为此目的而设计的,能够设置群组内所有项目的可见性和启用/禁用所有项目,但我一直无法找到以编程方式执行此操作的方法。
【问题讨论】: