我要更改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:我拍了一张截图,以便您可以看到(在红框中)系统已找到图像。
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);
}
答案 0 :(得分:1)
您需要使用onPrepareOptionsMenu(Menu menu):
在每次显示菜单之前调用它。您可以使用此方法有效地启用/禁用项目或以其他方式动态修改内容。
在此方法中,像在onCreateOtionsMenu
中一样检索您的项目,并检查您的操作系统中的gps是否修改项目图标。