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

2010年5月17日 星期一

從無到有-實戰Android系統開發-程式實戰(6)-選單(Menu)

當我們了解如何加入一個對話框及提示訊息的方法。之後,接下來,我們要來學習如何加入選單列的功能。為什麼要加入選單呢?

因為Android的選單列就像我們在用Word、Excel等軟體一樣,會將一些常用的功能整理成選單列,方便我們可以直接使用,在Android的選單列也是如此,只是因為手機可以顯示的欄位有限,最好是將常用的功能整理成最少二個,最多六個左右的主選單列,如果有其他功能,可以選取好選單列後,再畫面上顯示出來。以簡單、好用為原則即可。

在這個章節的範例中,我們要增加二個選單列,一個是About,用來顯示出上個章節的對話框,另一個就是Exit功能,就是離開系統的動作。

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

在Android主要是用「onCreateOptionsMenu」方法來建立選單列的主體。在 Android機器或模擬器上按下硬體的「Menu」鍵,就會顯示選單列,就是用「onCreateOptionsMenu」方法來定義。

當我們在 Activity 中定義了「onCreateOptionsMenu」方法之後,按下「Menu」鍵時,就會彈出相對應的選單列。而當我們在Android應用程式的選單列上選擇了相應的選項後,則是依賴「onOptionsItemSelected」方法,來負責處理選單列中各選項所個別對應的動作。

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

圖34


圖35

加入下述程式碼,來建立選單列及選取時,要處理的事件,如圖36所示。主要是Menu.FIRST這個函式來了解,在目前的系統中,選單列的編號目前到那個,而再加一就是下一個選單列的編號,依此類推即可。


圖36

程式執行的畫面,如圖37所示。


圖37