2010年5月18日 星期二

從無到有-實戰Android系統開發-程式實戰(7)-快捷選單(Context Menu)

在上一個章節,我們建立好了選單,而在這個章節,我們要在建立一種快捷選單(Context Menu)的方式。而使用快捷選單的原因,是因為有一些可以立即使用的功能,可以立即使用,不用再選取選單,再執行。最常見的例子就是:在資料列表出來後,可以選取某一筆記錄。停留數秒後,就會出現是要編輯或是刪除的快捷選單。

在Android建立快捷選單都包含兩個部份,第一個部份是建立選單列的事件方法,可以顯示出來快捷選單。第二部份就是要建立處理選項動作的事件方法。

在Android主要是用「onCreateContextMenu」事件來建立快捷選單的主體。在某個元件,停留數秒後,就會顯示快捷選單。跟之前不同的地方是,除了要建立出快捷選單外,還要在「onCreate」事件時,先註冊是由那個元件引起的快捷選單。可以參考圖39所示。

當我們在 Activity 中定義出快捷選單的選項後,接下來就是要處理選取某個選項後,要做那方面的處理。處理的方法會在「onContextItemSelected」事件中定義。

而在Eclipse平台,有提供一個方便的功能,可以幫我們建立一些可以覆寫的方法,就在選單「Source」中的「Override/Implement Methods」選項,會列出所以可以覆寫或繼承的方法,如圖38所示。選取「onCreateContextMenu」及「onContextItemSelected」方法,再按下「OK」按鈕。Eclipse就會幫我們建立好可覆寫的程式碼,如圖40所示。

圖38

接下來,就是程式碼方面的撰寫。首先,要先在「onCreate」事件,註冊是由那個元件引起的這個的快捷選單。在下述的範例中,主要是要在TextView元件上出現快捷選單。然後,選取某個選項,就會出現在EditText元件中。

所以,在「onCreate」事件,先用findViewById方法找到TextView元件,再用this.registerForContextMenu()方法來註冊快捷選單要出現在TextView元件中。範例程式碼,請參考圖39及圖40所示。

圖39

下一步,加入下述程式碼,來建立快捷選單列及選取時,要處理的事件,如圖40所示。主要是在「onCreateContextMenu」事件中,用menu.add方法來建立選單。而在「onContextItemSelected」事件中,要EditText的內容設成item.getTitle()取得的選項名稱即可。

圖40

程式執行的畫面,如圖41所示。當滑鼠停留在TextView元件數秒後,就會出現快捷選單,選取某個選項。就會將選項名稱出現在EditText元件中。

圖41

沒有留言: