Mam menu opcji na moim Activity
z MenuItem
"Start". Po wybraniu tego MenuItem
chciałbym zmienić Menu tak, aby zawierało "Zatrzymanie" MenuItem
. I w końcu, gdy wybrano "Stop", chciałbym zmienić z powrotem na "Start".Jak zmienić element menu w menu opcji na urządzeniu z systemem Android?
Oto części mojego kodu, który nie działa. Mam zarówno „start” i „stop” wymienione w mymenu.xml
I prawdopodobnie powinien usunąć „stop”, gdy menu jest tworzony:
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;
}
}
Czy próbowałeś już usunąć Stop po utworzeniu menu? Kod wygląda dobrze. Nie widzę niczego, co mogłoby spowodować problemy inne niż to. –
@Octavian: Próbowałem z 'menu.removeItem (R.id.stop);' after 'getMenuInflater();' ale to nie działało. Dostaję dwa elementy menu, jeden "start" i jeden "false" (powinien być "stop"), albo menu zawiesza się, kiedy powinienem się pokazać. – Jonas
gdzie próbujesz wywołać 'removeItem()'? W 'onPrepareOptionsMenu()'? –