5

Мне удалось установить коммутатор внутри панели действий (как в настройках Wi-Fi).Получение экземпляра коммутатора внутри ActionBar

Я поставил следующий mainmenu.xml файла в папке/меню:

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

После этого я отменяю метод onCreateOptionsMenu() в деятельности, а именно:

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

К сожалению, я не могу понять, когда вызывается этот метод. Вот проблема: кажется, что onCreateOptionsMenu не вызывается еще до onResume(), так NullPointerException брошено:

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

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

ли я что-то отсутствует? Есть ли другой способ поместить вид в панель действий?

EDIT

Моя цель API 17, и я не забочусь о низших. :)

Вот снимок из приложения, показывая методы управления жизненным циклом называются: Lifecycle methods

Благодаря

ответ

1

Попробуйте это:

@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

Эй, что работал как шарм! Спасибо! : D – XDnl

Смежные вопросы