Android: 无法切换 MenuItem 图标

Android: Can't toggle MenuItem icon

我想更改菜单项图标,但图标没有更改。

这是我找到 MenuItem 的方法(工作正常):

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_location_actions, menu);
    mActionLocation = menu.findItem(R.id.action_location);
    return super.onCreateOptionsMenu(menu);
}

方法UpdateIcon:我截图了,大家可以看到(红框内)图片已经被系统找到了。

mActionLocation 是在调用此方法之前初始化的 MenuItem,不为空。

有人有想法吗?


更新(在@vinitius的帮助下解决)

UpdateIcon 方法:

private void UpdateIcon(boolean locationOn) {
    mActionLocation = locationOn; // mActionLocation is a global boolean
    invalidateOptionsMenu();
}

onPrepareOptionsMenu 覆盖:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // Toggle location icon
    if (mActionLocation) {
        menu.findItem(R.id.action_location).setIcon(R.drawable.ic_location_on_white_24dp);
    } else {
        menu.findItem(R.id.action_location).setIcon(R.drawable.ic_location_off_white_24dp);
    }
    return super.onPrepareOptionsMenu(menu);
}

你需要使用onPrepareOptionsMenu(Menu menu):

This is called right before the menu is shown, every time it is shown.You can use this method to efficiently enable/disable items or otherwise dynamically modify the contents.

在此方法中,像在 onCreateOtionsMenu 中一样检索您的项目,并检查您的 gps 在 os 中是否修改您的项目图标。