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 中是否修改您的项目图标。
我想更改菜单项图标,但图标没有更改。
这是我找到 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 中是否修改您的项目图标。