Tengo un menú de opciones en mi Activity
con un MenuItem
"Inicio". Cuando este MenuItem
está seleccionado, me gustaría modificar el Menú para que contenga un MenuItem
"Parar". Y finalmente, cuando se selecciona "Parar", me gustaría volver a "Comenzar".¿Cómo puedo modificar un elemento de menú en el menú de opciones en Android?
Aquí hay partes de mi código que no están funcionando. Tengo tanto "Inicio" y "Stop" que se enumeran en mymenu.xml
probablemente debería eliminar el "stop" cuando se crea el menú:
public class MyActivity extends Activity {
private boolean isStarted = false;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
menu.removeItem(R.id.stop);
inflater.inflate(R.menu.mymenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.start:
isStarted = true;
return true;
case R.id.stop:
isStarted = false;
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(isStarted) {
menu.removeItem(R.id.start);
menu.add(R.id.stop);
} else {
menu.removeItem(R.id.stop);
menu.add(R.id.start);
}
return true;
}
}
¿Ya ha tratado de quitar Stop cuando se crea el menú? El código se ve bien. No puedo encontrar nada que pueda causar problemas distintos de eso. –
@Octavian: Intenté con 'menu.removeItem (R.id.stop);' después de 'getMenuInflater();' pero no funcionó. O bien obtengo dos elementos del menú, uno "inicio" y uno "falso" (debería ser "detener"), o el menú se bloquea cuando debería mostrarse. – Jonas
¿dónde está tratando de llamar a 'removeItem()'? En 'onPrepareOptionsMenu()'? –