public class Ex01 extends Activity {
public static final int ADD_ID = Menu.FIRST;
public static final int DELETE_ID = Menu.FIRST + 1;
public static final int EXIT_ID = Menu.FIRST + 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, ADD_ID, 0, R.string.menu_add);
menu.add(0, DELETE_ID, 1, R.string.menu_delete);
menu.add(0, EXIT_ID, 2, R.string.menu_exit);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ADD_ID:
setTitle("Insert...");
break;
case DELETE_ID:
setTitle("Delete...");
break;
case EXIT_ID:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
}
strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Ex01!</string>
<string name="app_name">Ex01</string>
<string name="menu_add">Add Item</string>
<string name="menu_delete">Del Item</string>
<string name="menu_exit">Exit</string>
</resources>
说明:
1. 一开始,框架就反向呼叫onCreate()函數,也呼叫onCreateOptionsMenu()。
2. 当你选取<Add Item>选项时,框架会反向呼叫onOptionsItemSelected()函數。
3. 框架是主角,Ex01 类别只是被呼叫的配角,复杂的控制邏辑都为框架所
做掉了,所以程序代码便得简单清晰了。
4. 呼叫onCreate()函數时,此函數首先正向呼叫父类别Activity 的onCreate()函
數,先执行父类别的预设行为,然后才执行ex01::onCreate()函數的附加行
为。继续执行到setContentView(R.layout.main)指令时,就去讀取main.xml
的内容,依据它來进行屏幕画面的布局(Layout),并显示出來。
5. 呼叫onCreateOptionsMenu() 函數时, 执行到指令: menu.add(0,
ADD_ID, R.string.menu_add)就去取/res/values/strings.xml 中的内容,
取得字串“Add Item”,显示于画面的选单上。