1. Preparations
Download several images to make the menu a icing on the cake
2. Create an android Project
Create a folder named menu under the res file of the project to place the xml file. That is, the layout file of the menu.
The directory structure is as follows:
Game_menu.xml source code:
View plain
<? Xml version = "1.0" encoding = "UTF-8"?>
<Menu xmlns: android = "http://schemas.android.com/apk/res/android">
<Item android: id = "@ + id/new_game"
Android: icon = "@ drawable/ic_new_game"
Android: title = "new_game"/>
<Item android: id = "@ + id/help"
Android: icon = "@ drawable/ic_help"
Android: title = "help"/>
</Menu>
Update_menu.xml source code:
View plain
<? Xml version = "1.0" encoding = "UTF-8"?>
<Menu xmlns: android = "http://schemas.android.com/apk/res/android">
<Item android: id = "@ + id/new_game"
Android: icon = "@ drawable/back_game"
Android: title = "exit"/>
<Item android: id = "@ + id/help"
Android: icon = "@ drawable/exit_game"
Android: title = "back"/>
</Menu>
3. Create a menu
Override the onCreateOptionsMenu (Menu menu) method.
View plain
@ Override
Public boolean onCreateOptionsMenu (Menu menu ){
Log. d (TAG, "onCreateOptionsMenu () is involed! "+ (Times ++) +" th ");
MenuInflater mInflater = getMenuInflater ();
MInflater. inflate (R. menu. game_menu, menu );
// Equivalent code below
// Return super. onCreateOptionsMenu (menu );
Return true; // if false is returned, the menu is not displayed.
}
OK, run the program, and click "menu". The result is as follows:
4. Design click events for menus
Override the onOptionsItemSelected (MenuItem item) method!
View plain
@ Override
Public boolean onOptionsItemSelected (MenuItem item ){
// Handle item selection
Switch (item. getItemId ()){
Case R. id. new_game:
// NewGame ();
Return true;
Case R. id. help:
// ShowHelp ();
Return true;
Default:
Return super. onOptionsItemSelected (item );
}
}
5. dynamically change menu
The onCreateOptionsMenu (Menu menu) method is called only once when the App is running, which is equivalent to the onCreate () method of the Activity. To change the menu dynamically, you must override the onPrepareOptionsMenu (Menu menu) method.
View plain
@ Override
Public boolean onPrepareOptionsMenu (Menu menu ){
Log. d (TAG, "onPrepareOptionsMenu () is involed! "+ (Times ++) +" th ");
MenuInflater mInflater = getMenuInflater ();
MInflater. inflate (R. menu. update_menu, menu );
// Equivalent code below
// Return super. onPrepareOptionsMenu (menu );
Return true; // if false is returned, the menu is not displayed.
}
The display effect is as follows:
Look at the log, right ??!!!
OK. Now you understand that the onPrepareOptionsMenu (Menu menu Menu) method is called after the onCreateOptionsMenu (menu) method. Then we click Menu again and click it several more times. Effect and Log, as shown below.
It can be found that the onPrepareOptionsMenu (Menu menu) method is called every time you click the menu. If you do this in the actual code, there will be a lot of menu items, obviously not, what should we do? The sample code is as follows:
View plain
@ Override
Public boolean onPrepareOptionsMenu (Menu menu ){
Log. d (TAG, "onPrepareOptionsMenu () is involed! "+ (Times ++) +" th ");
// Clear menu
Menu. clear ();
MenuInflater mInflater = getMenuInflater ();
MInflater. inflate (R. menu. update_menu, menu );
// Equivalent code below
// Return super. onPrepareOptionsMenu (menu );
Return true; // if false is returned, the menu is not displayed.
}
In this case, the menus created in the onCreateOptionsMenu (Menu menu) method will disappear ,:
6. Prompt
At the end, make a prompt in the original text above the sdk api document:
View plain
On Android 2.3 and lower, the system callonprepareoptionsmenu () each time the user opens the Options Menu.
On Android 3.0 and higher, you must call invalidateOptionsMenu () when you want to update