gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:31 24 4
gpt4 key购买 nike

更新

最初我使用的是 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"
...

在我有的相关activity的onPrepareOptionsMenu中

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

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

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

最佳答案

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

这对我有用

代替

MenuItem mnuTextGroup = menu.findItem(R.id.mnu_text_group);
mnuImage.setEnabled(mEnableImageMenu);
mnuTextGroup.setVisible(false);

这就是我想要的

menu.setGroupVisible(R.id.mnu_text_group, false);

关于android - 如何设置操作栏菜单组的可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21587341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com