close
其實要實作android menu很簡單,
這裡會快速的帶過,
主要會講一下onCreateOptionsMenu和onPrepareOptionsMenu的差別
首先先在/res/資料夾底下,開立一個資料夾/menu
然後再/res/menu/資料夾底下,建立一個menu_option.xml的檔案
檔案內容如下
1
2
3
4
5
|
<? xml version = "1.0" encoding = "utf-8" ?> < item android:id = "@+id/menuOption1" android:title = "option1" ></ item > < item android:id = "@+id/menuOption2" android:title = "option2" ></ item > </ menu >
|
建立完成以後,
就在activity中加入menu的code如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
public class main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); } //當menu option被點選以後的反應 @Override public boolean onMenuItemSelected( int featureId, MenuItem item) { Toast.makeText( this , String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show(); return super .onMenuItemSelected(featureId, item); } //建立option menu,等等會講解和onPrepareOptionsMenu的差別 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_option, menu); return super .onCreateOptionsMenu(menu); } //一樣是建立option menu,等等會講解和onCreateOptionsMenu的差別 @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_option, menu); return super .onPrepareOptionsMenu(menu); } }
|
這樣MENU就會建立完成,
但是onCreateOptionsMenu和onPrepareOptionsMenu的差別在哪呢?
onCreateOptionsMenu
只會呼叫一次,他只會在MENU顯示之前,去做一次!!!之後就不會再去呼叫!
onPrepareOptionsMenu
onPrepareOptionsMenu是每次在display menu之前,都會去呼叫,
只要按一次menu按鍵,就會呼叫一次。
所以你會發現每次只要按一次menu按鍵,
menu選單就會多兩個(因為我們預設是兩個)
你可以利用onPrepareOptionsMenu來做update menu狀態的動作
如果你要把menu現有的option清空,
就是下面那行CODE
1
|
menu.clear();
|
全站熱搜
留言列表