我有一个允许用户打开和关闭gps的菜单项。在onCreate()中,活动会检查gps的状态并使用适当的资源(2个不同的图标)。如何动态更新项目图标?我已经尝试了下面的代码,但我有一个滞后:用户必须按下项目并输入两次位置和安全设置才能更新菜单。谢谢。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.GPS:
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
item.setIcon(R.drawable.gps_off);
} else {
item.setIcon(R.drawable.gps);
}
break;
}
答案 0 :(得分:2)
您必须覆盖 onPrepareOptionMenu 才能在每次构建菜单时描绘您的更改。按照示例:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem mi = (MenuItem) menu.findItem(R.id.GPS);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
/*do your changes with its icon*/
item.setIcon(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)? R.drawable.gps_off : R.drawable.gps);
return super.onPrepareOptionsMenu(menu);
}