2011-07-25 104 views
0

我是通過一本書學習,所以請原諒這個新手問題。Android,一堆圖像按鈕

我在我的xml一堆imageButtons的,這裏是如何他們中的一個樣子:

<ImageButton android:src="@drawable/level1" android:layout_width="wrap_content" 
android:id="@+id/imageButton1" android:layout_height="wrap_content" 
android:onClick="button_clicked1"></ImageButton> 

和處理代碼:

public void button_clicked1(View v) { 
    text1.setText("clicked"); 

    } 

,而不是讓每個按鈕都有其獨立的onClick代碼,無論如何,我可以通過哪個按鈕被點擊?例如button_clicked(1)然後button_clicked(2)代替button_clicked1像它現在是(在上面的示例XML代碼)

或我別無選擇,只能不得不單獨做呢?

回答

2

類型 - 我喜歡做的是讓我的視圖或活動實現View.OnClickListener。

public class MyView extends ImageButton implements OnClickListener 
的onCreate期間

然後,我做這樣的事情:

((ImageButton)findViewById(R.id.imageButton1)).setOnClickListener(this); 

然後,在我的onclick:

public void onClick(View view){ 
switch(view.getId()){ 
    case R.id.imageButton1: 
     // do something. 
     break; 
    case R.id.imageButton2: 
     // do somethign else. 
     break; 
} 

當然,你絕對可以發揮創意和折騰switch語句,如果你的任何按鈕都應該觸發相同的事件行爲。此外,我不是在我可以輕鬆查看我的droid引用的地方,因此可能會有一個特定於ImageButton的OnClickListener - 如果是,請在您的包含View或Activity中實施以合併處理程序...

Hope這是有道理的 - 快樂的編碼!

B

+0

是的,我也認爲這是最好的選擇。 –

+0

這意味着我將不得不有一堆'((ImageButton)findViewById(R.id.imageButton1))。setOnClickListener(this);'代碼,而不是吧? – Ryan

+0

非常非常,是的。我不知道任何其他方式(例如聲明式)分配處理程序。 – Brian