2016-07-10 19 views
1

Ich habe eine ActionBar mit einigen Menüpunkten, die Symbole sind. Und was ich will ist, zwischen zwei Zeichen zu wechseln.Gute Übung zu ActionBar-Symbol toggle

Dies ist, was ich bisher getan habe:

if(id == R.id.shift_day){ 
if(DoN==0){ 
item.setIcon(R.drawable.ic_menu_weather_day); 
shift="shift night"; 
DoN=1; 
onStart(); 
} 
if(DoN==1){ 
item.setIcon(R.drawable.ic_menu_weather_night); 
shift="shift day"; 
DoN=0; 
onStart(); 
} 
} 

Arbeit wird dadurch nicht so gut, weil es das Symbol einmal und nie wieder ändert.

+0

dies kann Ihnen helfen, http://stackoverflow.com/questions/19882443/how-to-change-menuitem-icon-in-actionbar-programatically –

+0

Mein Code innerhalb der ist ** onOptionsItemSelected Ich weiß schon nicht, was ich hier tun soll. – mrg3tools

+0

für welchen Zustand soll das Symbol wechseln? –

Antwort

0

Möglicherweise werden Sie DoN = 0 innerhalb onStart() -Methode festlegen. Versuchen Sie, das zu entfernen und setzen Sie stattdessen wahr zurück; Ihr Code, wenn DoN = 0, dann setzt er zuerst DoN = 1 dann stimmt es mit dem zweiten Block überein und geht dort ein und setzt DoN = 0 zurück. Versuchen Sie folgendes:



    if(id == R.id.shift_day){ 
     if(DoN==0){ 
      item.setIcon(R.drawable.ic_menu_weather_day); 
      shift="shift night"; 
      DoN=1; 
     } 
     else if(DoN==1){ 
      item.setIcon(R.drawable.ic_menu_weather_night); 
      shift="shift day"; 
      DoN=0; 
     } 
     return true; 
    } 

+0

Das hat wirklich gut funktioniert. Selbst mit dem ** onStart **, der benötigt wird, um Daten aus Firebase in eine Listenansicht zu laden, abhängig von der ** Verschiebung **. – mrg3tools

0

Sie sollten DoN als statische Variable deklarieren und diese DoN-Variable in SharedPreferences speichern, um sich daran zu erinnern, welchen Status wir später verwenden werden. Wenn Sie das Programm neu starten, erhalten Sie diese Variable von SharedPreferences und dann set icon for menu :)