回答第一個問題:什么是選項菜單?答:選項菜單就是可以顯示在操作欄上的菜單。
菜單的視圖需要建立在res/menu下。
其中,showAsAction屬性用於指定菜單選項是顯示在操作欄還是隱藏到溢出菜單(overflow menu)。ifRoom|withText表示只要空間夠,就顯示圖標與文字在操作欄上。always(不推薦使用)和never也是屬性值。
選項菜單除了視圖之外,有兩個回調函數非常重要。
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater)
public boolean onOptionsItemSelected(MenuItem item)
這兩個方法在activity和fragment里都有。
先說onCreateOptionsMenu方法,如果選項菜單是在fragment中,整個流程如下:
FragmentManager--(判斷fragment的hasOptionsMenu值)-->true--(調用fragment的onCreateOptionsMenu())-->OptionsMenu
再說onOptionsMenuSelected(MenuItem item)方法,該方法傳入的參數就是被選中的item,還記得本文開頭的選項菜單視圖中定義的item么,
對,就是那里定義的item。那么如何判斷用戶選擇的是哪個item呢?通過item的getItemId()方法獲取item的id來和視圖中我們的item中的id對比。
太陽照常升起,人生寂寞如雪。