Mixing menuItem.setIntent with onOptionsItemSelected doesn't work
- by superjos
While extending a sample Android activity that fires some other activities from its menu, I came to have some menu items handled within onOptionsItemSelected, and some menu items (that just fired intents) handled by calling setIntent within onCreateOptionsMenu.
Basically something like:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
menu.add(0, MENU_ID_1, Menu.NONE, R.string.menu_text_1);
menu.add(0, MENU_ID_2, Menu.NONE, R.string.menu_text_2);
menu.add(0, MENU_ID_3, Menu.NONE, R.string.menu_text_3).
setIntent(new Intent(this, MyActivity_3.class));
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);
switch (item.getItemId())
{
case (MENU_ID_1):
// Process menu command 1 ...
return true;
case (MENU_ID_2):
// Process menu command 2 ...
// E.g. also fire Intent for MyActivity_2
return true;
default:
return false;
}
}
Apparently, in this situation the Intent set on MENU_ID_3 is never fired, or anyway the related activity is never started.
Android javadoc at some point goes like <<[if you set an intent on a menu item] and nothing else handles the item, then the default behavior will be to [start the activity with the intent].
What does it actually mean "and nothing else handles the item"?
Is it enough to return false from onOptionsItemSelected?
I also tried not to call super.onOptionsItemSelected(item) at the beginning and only invoke it in the default switch case, but I had same results.
Does anyone have any suggestion?
Does Android allow to mix the two type of handling?
Thanks for your time everyone.