Sono riuscito a inserire uno Switch all'interno della barra delle azioni (come nelle impostazioni Wi-Fi).Ottenere l'istanza di Switch all'interno di ActionBar
ho messo il seguente file dimainmenu.xml all'interno della cartella/menù:
<?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>
Dopo di che ho calpestato il metodo onCreateOptionsMenu()
nell'attività, come segue:
@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);
}
Sfortunatamente, non riesco a capire quando viene chiamato questo metodo. Ecco il problema: sembra che onCreateOptionsMenu
non si chiama anche prima onResume()
, quindi un NullPointerException
è gettato:
@Override
public void onResume()
{
super.onResume();
// Synchronize the switch with service's status
swtService.setChecked(ServiceHelper.isServiceStarted(this, MySystemService.class.getName()));
}
mi sto perdendo qualcosa? C'è un altro modo per mettere una vista all'interno della barra delle azioni?
EDIT
mio obiettivo API è 17, e non mi importa di quelle più basse. :)
Ecco un colpo di applicazione, che mostra i metodi del ciclo di vita chiamate:
Grazie
Ehi, che ha funzionato come un fascino! Grazie! : D – XDnl