Using an Intent to respond to Menu Items

You can also associate a menu item with an intent by using the MenuItem's method setIntent(intent). By default, a menu item has no intent associated with it. But when an intent is associated with a menu item, and nothing else handles the menu item, then the default behavior is to invoke the intent using startActivity(intent). For this to work, all the handlers—especially the onOptionsItemSelected method—should call the parent class's onOptionsItemSelected() method for those items that are not handled. Or you could look at it this way: the system gives onOptionsItemSelected an opportunity to handle menu items first (followed by the listener, of course).

If you don't override the onOptionsItemSelected method, then the base class in the Android framework will do what's necessary to invoke the intent on the menu item. But if you do override this method and you're not interested in this menu item, then you must call the parent method, which in turn facilitates the intent invocation. So here's the bottom line: either don't override the onOptionsItemSelected method, or override it and invoke the parent for the menu items that you are not handling.

0 0

Post a comment