1. http://developer.android.com/reference/android/widget/Button.html

在developer的android搜尋Button可以看到詳細的介紹和使用方法

Button也就是按鈕的意思

其中我們可以發現Button 繼承了TextView 又繼承了View

基本上所有看得到的物件都是由View演變過來的

01.png  

 

2. 開啟Eclipse, 然後拉3個Button到Layout上, 這篇介紹3種button click的用法

02.png  

 

3. 方法一:用xml來設定button的click事件

點取第一個Button, 在屬性選單下找到On Click,

然後再右邊打上你的命名, 這邊是以clickbutton1為例

之後滑鼠左鍵雙擊Button1

03.png  

 

4. 可以在xml上發現多了一個屬性onClick, 屬性值是clickbutton1

04.png  

 

5. 接著到MainActivity.java下, 加入下列method, 也就是方法

他的格式是 public void 你命的名稱 (View 變數名){}

其中你會發現View的底下有皺摺號, 然後該行前面有紅色打X

這是代表自動編譯沒過

05.png  

 

6. 接著將滑鼠移到View上, 會發現出現下拉式選單

這邊是參考的解決方案, 有時候並不一定會有正解

但這個例子是因為沒有Import View, 所以他認不出來

此時將滑鼠移到該選項之後, 按下左鍵點選

06.png  

 

7.  就會發現最上面多了一行Import, 然後下方的錯誤也消失了

07.png  

 

8. 這時我們要把按下button1的動作加入到method內

這邊以設定可視不可視為例, 按下button傳回的view就是指向該button

這邊暫不討論setVisibility的功能, 就先大概知道他的參數有三種

完成後按下存檔之後Run

08.png  

 

9. 在模擬器上可以看到剛拉好的3個button, 這時滑鼠左鍵點下Button

09.png  

 

10. 就會發現它變成不可視了

10.png  

 

11. 方法二: 用id的方法來取得button物件, 並用無名類別來實踐click

格式如下: Button 變數名 = findViewById(R.id.物件id);

打完之後會發現Button下有皺褶號

11.png  

 

12. 這也是和之前一樣, 因為沒有import所以認不出來, 所以滑鼠左鍵import

12.png  

 

13. 點選之後反而變成findViewById下出現皺摺號, 這是因為 Button 和 View並不等價

所以要casting, 也就是轉型, 也是利用滑鼠左鍵點選

這邊可以參考java的觀念

13.png  

 

14. Casting之後就可以看到錯誤都處理好了, 這時候的b2就代表著button2

14.png  

 

15. 接著要為b2設定按下去的觸發事件, 這邊使用的方法就是

View的名稱.setOnClickListener(有implement OnclickListener的物件);

在按下b2.的時候, Eclipse就會輔助你列出一些選像, 然後滑鼠左鍵移到上面可以看屬性

15.png  

 

16. 接著在setOnClickListener內打上 new OnClickListener(){}

這是一種java無名類別的使用方式, 然後也是要import

 16.png  

 

17. import完之後還是會有錯, 因為它內部的方法需要implement,

所以將滑鼠點上去, Eclipse就會自動幫你產生需要implement的方法

17.png  

 

18. 在這邊只有onclick這個方法需要被實踐, 到這邊是不是有和方法一的步驟7似曾相似的感覺

18.png  

 

19. 再來來為button2設計動作, 這邊就以setText來舉例, 也就是更改他的顯示字樣

View的名稱.setText(顯示的字串), 當然他也是有別種的用法, 這邊就以最簡單的為例

而他的細節和說明也是可以用移動滑鼠左鍵去看

19.png  

 

20. 字串那些都打好之後, 會發現b2沒辦法被參考到, 這時用最簡單的解決方法

在宣告b2前加上final

20.png  

 

21. 改變完之後, buton2的整個內容就如同下面顯是一樣

21.png  

 

22. 載入模擬器按下第二個按鈕就會看到他的顯示字串變成剛剛設定的b2 click

22.png  

 

23. 方法三: 用id的方法來取得button物件, 並用外部的類別來實踐click

有了button2的經驗, 這裡可以直接用取得id的方式拿盜button3

如下列所示

23.png  

 

24. 接著在外面宣告一個class, 需要implements OnClickLostener, 如下圖所示

然後你會發現這class上有皺褶號

24.png  

 

25. 將滑鼠移到上面變會發現他需要內部的方法需要實踐

class內implemts介面時必須實作內部的abstract方法

25.png  

 

26. 最後弄出來的基本型式就如同下圖, 是不是又有種似曾相似的感覺

26.png  

 

27. 接著為他設計行為, 這邊就以方法一的例子, 將他的可視改成GONE的參數放入

27.png  

 

28. 接著要為b3設定監聽器, 這次不同的是,

()內我只要用new 配置一個剛有OnClickListener功能的class

而button3整體的部分, 就如同下圖顯示

28.png  

 

29. 接著載入到模擬器, 按下去之後就會發現他不見了

29.png  

 

以上就是介紹3種button OnClickListener的方法, 有點長

但是做過一次以後就會覺得很簡單

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 RX1226 的頭像
    RX1226

    給你魚竿

    RX1226 發表在 痞客邦 留言(0) 人氣()