Android:无法切换MenuItem图标

时间:2015-03-17 18:00:27

标签: android menuitem

我要更改menuitem图标,但图标没有更改。

以下是我如何找到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:我拍了一张截图,以便您可以看到(在红框中)系统已找到图像。

enter image description here

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);
}

1 个答案:

答案 0 :(得分:1)

您需要使用onPrepareOptionsMenu(Menu menu)

  

在每次显示菜单之前调用它。您可以使用此方法有效地启用/禁用项目或以其他方式动态修改内容。

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