Мне удалось установить коммутатор внутри панели действий (как в настройках 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, и я не забочусь о низших. :)
Вот снимок из приложения, показывая методы управления жизненным циклом называются:
Благодаря
Эй, что работал как шарм! Спасибо! : D – XDnl