Re: [問題] 多個Button的onClick事件
※ 引述《jakevin (真。假凱文)》之銘言:
: 版友們午安
: 不知道有沒有人做過多個按鈕群組的onClick事件
: 今天我的問題是
: [1] [2] [3]....[10] 共十個按鈕
: 每個按鈕執行一個相同的事件就是 按鈕字改成"你好"
: 我在main.xml 把每個按鈕都加入了 android:onClick="myClickHandler"
: 但現在問題來了
: 我要怎麼知道是哪一個按鈕按下去的?
: public void myClickHandler(View target) {
: // Do stuff
: }
: 我可以從taget中得知是哪個按鈕按下去的,但是我不知道該怎麼去對taget下指令
: 比方說 target.setText("你好");
: 想請問這該如何處理是好?
: 謝謝大家
一行結束: ((Button)target).setText("你好");
為什麼推文會用到switch、for、if 之類的呢.....?
頂多再加上一些防呆、防意外狀況之類的就很多了
if(target instanceof Button) ((Button)target).setText("你好");
else /* 被點擊的不是Button時所做的措施 */
還有,判斷物件型別,我只知道用instanceof,以及 Object.class
推文中有人推不要用instanceof
我很想知道為什麼,難道是有什麼代價或是BUG嗎?
如果有別的方法,非常歡迎指教。
自己的經驗是.... 要向下轉型前要先判斷
不然程式結構改了的話會很麻煩
總之,以後還是會很常用到型別判斷就是了
========================================================
以下是解說:
public void onClick(View v)
{
/* ............. */
}
裡面傳進來一個View,這個View到底是什麼東西呢?
我懶的講,不知道的話,在用Eclipse時,把滑鼠移到onClick上面去
裡面應該有一行:
Parameters
v The view that was clicked.
可能還是有人說....
我又不知道View是什麼,怎麼知道該怎麼用?
總之,在你看到一個新的型別、介面、物件的時候
請養成一個習慣
滑鼠點一下Button (型別的字)
右鍵 => 快速類型階層
如果連滑鼠右鍵都懶得按的話,可以在點一下那個字後,再按ctrl + T
接著會看到那個物件的繼承圖
Object > View > TextView > Button 這樣一路繼承下來的
這地方的觀念可以去找Java關於物件導向的章節去看
請務必搞懂,這是Java的精隨
(Button)target
這樣子只是把target下向轉型而已
把View轉成Button之後,當然有.setText() 可以用
因為 setText() 是從TextView繼承而來的
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.233.152.130
推
02/13 20:21, , 1F
02/13 20:21, 1F
推
02/13 21:38, , 2F
02/13 21:38, 2F
推
02/13 23:06, , 3F
02/13 23:06, 3F
→
02/14 00:16, , 4F
02/14 00:16, 4F
→
02/14 00:20, , 5F
02/14 00:20, 5F
→
02/14 00:52, , 6F
02/14 00:52, 6F
→
02/14 00:56, , 7F
02/14 00:56, 7F
→
02/14 00:56, , 8F
02/14 00:56, 8F
推
02/14 02:34, , 9F
02/14 02:34, 9F
推
02/14 04:35, , 10F
02/14 04:35, 10F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章