Hello World 進階了 -- 事件處理 Part 1
This document is provided as is. You are welcomed to use it for
non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu
請勿轉貼
Android 的事件處理機制類似 Java,但是它還多提供了一種方式,讓單純的事件處理變的簡單。這兩種方式我們都會介紹,在本文中我們 先介紹簡單版的。
- 仔細檢查 Button 元件的選項(如下圖所示),其中有一個名為 OnClick 的選項,請點選它。
- 點選後的畫面如下;請在文字欄位內輸入 "onClickButton":
- 根據 Android 的規定,事件處理方法的 header 必須符合下列格式:
public void 名稱(View 變數名稱) { … }
public void onClickButton(View view) { … }
- 那麼在使用者點選了按鈕之後,onClickButton() 要做什麼事呢?讓我們先把事情簡化,假設使用者輸入 eric,
則 onClickButton() 會將 Hello eric 顯示在文字欄位。既然如此,onClickButton()
的主要工作就是取得文字欄位的
資料,然後把取得的資料加上 Hello 後把結果擺放到文字欄位;也就是以下三個動作:
- 程式必須知道文字欄位的物件,取得的方式是 EditText input = (EditText) findViewById(R.id.editText1);;
- 從 input (也就是文字欄位物件)取得文字內容的方式: input.getText();
- 把字串設定到 input 的方式:input.setText()。
- 對於 input 的取得方式(即 EditText input = (EditText)
findViewById(R.id.editText1);),我們需要進一步說明。首先,
我們先看看 R;R 是什麼?R 是 R.java,該類別是由 ADT 自動產生的,其代表這個程式的資源(resources),該檔案位於 gen/tw.edu.nchu.mis.jlu/R.java,
開啟該檔案後的畫面如下:(請小心,該檔案的內容切
勿修改)
- 在程式中要如何某一特定的元件呢?最簡單的方式就是經由
finViewById(編號),由於程式中提供的編號代表一個文字欄位,而文字欄位的資料型態是
EditText,因此經過轉型之後,即可取得該文字欄位的物件 input。請開啟 src/tw.edu.nchu.mis.jlu/HelloNameActivity.java,
並將三個步驟的程式撰寫如下:
- 我們完成了,心急的人可以進行編譯和執行了。想進一步了解的人,可能想知道程式中的 R.layout.main
代表什麼?
其實之前 R.id.editText1 的說明,大家應該都大概知道 R.layout.main 是什麼了,更明確的說,它就是 res/layout/main.xml;
這種設計方式可以讓我們輕易的利用 main.xml 來排版而完全不必理會程式碼,真棒,不是嗎?
請在 Eclipse 上點選 Run,然後再跳出來的視窗點選 "Android Application"。程式應該會經過編譯,然後 Eclipse 會自動帶出模擬器,然後 在模擬器中執行該程式;該程式的執行畫面如下:
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu
沒有留言:
張貼留言