Android 3.0 蜂巢:如何在操作栏中启用/禁用菜单项?

9

在XML中禁用菜单项非常容易:

<item android:id="@+id/men_1" 
    android:title="@string/men_1" 
    android:showAsAction="ifRoom|withText"
    android:icon="@drawable/ic_menu_1"
    android:enabled="false"/>

如果你的应用程序版本低于3.0,那么通过代码更改它也是相当容易的:

@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
  super.onPrepareOptionsMenu(menu);

  MenuItem item = menu.findItem(R.id.men_1);
  item.setEnabled(false);

  return true;
}

但是在Android 3.x上该怎么做呢?我想根据显示的Fragment禁用菜单选项。

祝好, jellyfish

1个回答

24

基本相同,但是将代码放入片段中,注意不同的方法签名。

@Override
public void onPrepareOptionsMenu(Menu menu) {
    MenuItem item= menu.findItem(R.id.men_1);
    item.setEnabled(false);
    super.onPrepareOptionsMenu(menu);
}

因此,该片段负责填充菜单等。

编辑注意需要调用setHasOptionsMenu(true)


谢谢!不过直到我在Fragment中添加了“setHasOptionsMenu(true)”的调用,它才起作用。 - jellyfish
对于其他人来说,如果你想要实现这个功能,你还需要在活动中重写onCreateOptionsMenu方法。代码如下:@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); return true; } - span
1
禁用操作项而不是仅隐藏它们真的值得推荐吗?作为用户,我认为让无法点击的操作项留在那里并不好。 - android developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接