在我的 onCreateOptionsMenu() 中,我基本上有以下内容:
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, MENU_ITEM_INSERT, Menu.NONE, R.string.item_menu_insert).setShortcut('3',
'a').setIcon(android.R.drawable.ic_menu_add);
PackageManager pm = getPackageManager();
if(pm.hasSystemFeature(PackageManager.FEATURE_CAMERA) && pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS)){
menu.add(Menu.NONE, MENU_ITEM_SCAN_ADD, Menu.NONE, ((Collectionista.DEBUG)?"DEBUG Scan and add item":getString(R.string.item_menu_scan_add))).setShortcut('4',
'a').setIcon(android.R.drawable.ic_menu_add);
}
...
}
在 onPrepareOptionsMenu 中还有以下内容:
final boolean scanAvailable = ScanIntent.isInstalled(this);
final MusicCDItemScanAddTask task = new MusicCDItemScanAddTask(this);
menu.findItem(MENU_ITEM_SCAN_ADD).setEnabled(scanAvailable && (tasks == null || !existsTask(task)));
如您所见,两个选项项具有相同的可绘制集(android.R.drawable.ic_menu_add)。现在,如果在 onPrepareOptionsMenu 中第二个菜单项被禁用,它的标签和图标变为灰色,但第一个菜单项的图标也变为灰色,而第一个菜单项的标签保持黑色并且仍然可以点击。是什么导致了两个图标/可绘制对象之间的这种串扰?在这种情况下,系统不应该处理像 mutate() 这样的事情吗?
我已经包括了一个截图: