5

Udało mi się umieścić przełącznik na pasku akcji (jak w ustawieniach Wi-Fi).Uzyskiwanie instancji przełącznika wewnątrz ActionBar

umieścić następującą mainmenu.xml plik w folderze/menu:

<?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> 

Potem overrode Sposób działania onCreateOptionsMenu(), co następuje:

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

Niestety, nie mogę zrozumieć, kiedy ta metoda jest wywoływana. Oto problem: wydaje się, że onCreateOptionsMenu nie nazywa się nawet przed onResume(), więc NullPointerException jest wyrzucany:

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

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

Am I czegoś brakuje? Czy istnieje inny sposób umieszczenia widoku na pasku akcji?

EDIT

Moim celem API jest 17, a ja nie dbam o niższych. :)

Oto strzał wniosku, pokazując metody cyklu życia zwane: Lifecycle methods

Dzięki

Odpowiedz

1

Spróbuj tego:

@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, który pracował jak urok! Dziękuję Ci! :RE – XDnl