Mixing menuItem.setIntent with onOptionsItemSelected doesn't work
Posted
by
superjos
on Stack Overflow
See other posts from Stack Overflow
or by superjos
Published on 2010-12-30T21:50:48Z
Indexed on
2010/12/30
21:53 UTC
Read the original article
Hit count: 231
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.
© Stack Overflow or respective owner