5

Bir Anahtar'ı eylem çubuğuna koymayı başardım (Wi-Fi ayarlarında olduğu gibi). aşağıdaki gibi, ben aktivitesinde onCreateOptionsMenu() yöntemi overrode Bundan sonraAlma örneğini ActionBar içinde alma

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:id="@+id/item1" 
     android:titleCondensed="Service" 
     android:title="Service" 
     android:actionViewClass="android.widget.Switch" 
     android:showAsAction="always|withText"> 
</item> 

:

G/menü klasörünün içindeki aşağıdaki mainmenu.xml dosyayı koymak

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mainmenu, menu); 

    // Get widget's instance 
    swtService = (Switch)menu.findItem(R.id.item1).getActionView(); 
    swtService.setOnCheckedChangeListener(this); 

    return super.onCreateOptionsMenu(menu); 
} 

Ne yazık ki, bu yöntemin ne zaman çağrıldığını anlayamıyorum. Burada sorun: o onCreateOptionsMenu, önce bile onResume() çağrılmaz yüzden NullPointerException atılmış gibi görünüyor:

@Override 
public void onResume() 
{ 
    super.onResume(); 

    // Synchronize the switch with service's status 
    swtService.setChecked(ServiceHelper.isServiceStarted(this, MySystemService.class.getName())); 
} 

Ben bir şey eksik? Eylem çubuğuna bir Görünüm yerleştirmenin başka bir yolu var mı?

DÜZENLEME

Hedefim API 17, ve ben daha düşük olanlar umurumda değil. :)

İşte uygulamanın bir atış denilen yaşam döngüsü yöntemleri gösteren var: Lifecycle methods

Teşekkür

cevap

1

bu deneyin:

@Override 
    public void onPrepareOptionsMenu(Menu menu){ 
     super.onPrepareOptionsMenu(menu); 
     swtService.setChecked(ServiceHelper.isServiceStarted(this, MySystemService.class.getName())); 

    } 

@Override 
public void onResume() 
{ 
    super.onResume(); 
    this.getActivity().invalidateOptionsMenu(); // If you are using fragment 
    invalidateOptionsMenu(); // If you are using activity 
} 
+1

Hey, bir cazibe gibi çalıştı! Teşekkür ederim! : D – XDnl