2012-01-04 16 views
0

ユーザがgpsをオン/オフできるメニュー項目があります。onCreate()では、アクティビティがgpsのステータスをチェックし、適切なリソース(2つの異なるアイコン)を使用します。アイテムアイコン?私は以下のコードを試しましたが、遅れがあります:ユーザーはアイテムを押して、LocationとSecurityの設定を2回入力してメニューを更新する必要があります。ありがとうございました。あなたは、変更メニューが構築されるたびに描写するために、onPrepareOptionMenuをオーバーライドする必要がメニュー項目を動的に変更する

@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; 

}

答えて

2

。例:

@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); 
} 
+0

ありがとうございます!魅力のように動作します。 –

関連する問題