2011-04-13 50 views
0

我在我的佈局中有25個按鈕。什麼是有效的方法知道哪個按鈕被點擊或獲得他們的ID?編程許多按鈕!

預先感謝..

+0

我還沒有看到您的用戶界面,但除非您正在編寫平板電腦,否則25個按鈕聽起來非常難以在基於手指的觸摸設備上導航。 – 2011-04-13 16:42:55

回答

0

我不明白哪裏是在佈局XML問題

添加的onClick =「點擊」每一個按鈕,然後在活動廣告功能

public void onClick(View v) { 
    switch(v.getId()){ 
    case R.id.Button1: 
     break; 
    case R.id.Button2: 
     break; 
    case R.id.Button3: 
     break; 
//.... 
    } 
} 

EDIT(怎麼我不能添加到COMENT別人的答案: @Zach拉特納

根據這一http://developer.android.com/reference/android/widget/Button.html扎克,你錯了

然而,不是在你的 活動施加 OnClickListener的按鈕,你可以指定一個方法 在XML佈局的按鈕,使用 了android:onclick屬性

1

按鈕實現View.OnClickListener它接收已被點擊的視圖。你可以得到的ID如下...

@Override 
public void onClick(View view) { 
    int Id = view.getId(); 
} 
0

按照Android documentation for an Activity,找到一個視圖中的唯一方法是通過findViewById。如果您想在設置具有特定ID的按鈕時執行某些操作,則必須單獨爲每個按鈕添加onClickListeners。

0

像這樣的東西應該工作:

Button button1 = (Button)findViewById(R.id.Button01); 
    Button button2 = (Button)findViewById(R.id.Button02); 

    private class myListener implements OnClickListener 
    { 

     @Override 
     public void onClick(View arg0) { 

      if (arg0 == button1) 
      { 
       //button 1 clicked 
      } 
      else if (arg0 == button2) 
      { 
       //button 2 clicked 
      } 
      //etc 
     } 

    } 

    myListener listener = new myListener(); 

    button1.setOnClickListener(listener); 
    button2.setOnClickListener(listener); 
0

做到這一點的標準方法是在XML佈局文件具有獨特ID申報每一個按鈕,像這樣:

<Button android:id="@+id/my_button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/my_button_text"/> 

請注意,您必須對執行此操作,每個按鈕

接下來,你可以使用下面的代碼段爲按鈕聽衆:

final Button button1 = (Button) findViewById(R.id.my_button1); 
    button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
      } 
    }); 

這將是低效的,因爲你將創建25個新View.OnClickListener對象(每個按鈕),因爲你」爲Android重新編程,這是一個內存受限的設備,最好只創建一個監聽器並將其分配給每個按鈕,然後檢查View v對應的按鈕。

我希望你不會把25個按鈕放在一個屏幕上。如果是的話,你可能想重新考慮你的設計。