Mobile Phone Handheld Hardware Hardware Rick Rogers John Lombardo O'Reilly Media, Inc. O'Reilly Media Android Application Development, 1st Edition10.4. The MenuThe final aspect of application control
we'll cover in this chapter is the menu. Example 10-14 shows how to implement a simple
menu by overriding two Activity
methods. Example 10-14. Implementing a menu@Override public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, CLEAR_MENU_ID, Menu.NONE, "Clear");
return true;
}
@Override public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
dotModel.clearDots();
return true;
default: ;
}
return false;
} |
When this code is added to the TouchMe class, clicking the device's Menu key
will cause the application to present a menu (labeled "Clear" at the
bottom of the screen), as shown in Figure 10-7. 
Clicking the Enter key or tapping the menu item again will clear the
dot widget. Interestingly, if you run this application, you will find that while
the added menu item works most of the time, it does not work when the
DotView is in focus. Can you guess
why? If you guessed that the problem is caused by the OnKeyListener installed in the DotView,
you are correct! As implemented in Example 10-15, the listener swallows the menu
key event by returning TRue when it is
clicked. This prevents the standard View processing of the menu key keystroke. In
order to make the menu work, the OnKeyListener needs a new case, shown in Example 10-15. Example 10-15. Improved key handlingswitch (keyCode) {
case KeyEvent.KEYCODE_MENU:
return false;
// ... |
The Android UI framework also supports contextual menus. A ContextMenu appears in response to a long click
in a widget that supports it. The code required to add a contextual menu
to an application is entirely analogous to that for the options menu
shown earlier except that the
respective methods are onCreateContextMenu and onContextItemSelected. Additionally,
one more call is required. In order to support contextual menus, a widget
must be assigned a View.OnCreateContextMenuListener by calling its
View method, setOnCreateContextMenuListener. Fortunately,
since Activity implements the View.OnCreateContextMenuListener interface, a
common idiom looks like Example 10-16. Example 10-16. Installing a ContextMenuListenerfindViewById(R.id.ctxtMenuView).setOnCreateContextMenuListener(this); |
Simply overriding the default, empty Activity implementations of the context menu
listener methods will give your application a context menu. This chapter has shown how the Android graphical interface works
overall, and has given you the tools to manipulate its basic components:
windows, Views, and events. The following chapter explains the most useful
widgets Android makes available, and Chapter 12 shows you how to do your own graphics
programming.
|