处理多个按钮和多个onclick事件

时间:2014-10-23 13:35:19

标签: android

我的活动中有大约9个按钮 截至目前,我初始化每一个 与

Button button1 = (Button) findViewById(R.id.one);
button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "One", Toast.LENGTH_SHORT).show();
     }
    });
Button button2 = (Button) findViewById(R.id.two);
button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "two", Toast.LENGTH_SHORT).show();
     }
    });

依此类推。 如何在数组中初始化它们并为每个按钮分配唯一的onclick元素?

enter image description here

2 个答案:

答案 0 :(得分:1)

我会选择开关!

将所有onclick属性设置为:

android:onclick="onClick"

并在您的活动中实现,如下所示:

public void onClick(View v) {
       switch(v.getId()) {
           case R.id.button1:
           // your code;
           break;
           case R.id.button2:
           // your code;
           break;
       ...
           default:
           //your code
   }

答案 1 :(得分:0)

您可以使用类似button1.setOnClickListener(getClickListener('one'));

的内容
public View.onClickListener getClickListener(final String as){
   return new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          Toast.makeText(getApplicationContext(), "One", Toast.LENGTH_SHORT).show();
    }
   };
}

并将所有按钮添加到数组中,然后在循环中设置on click侦听器

**编辑:**

    Button[] btn = new Button[10];
    HashMap<String,Button> buttons = new HashMap<String, Button>();

    buttons.put("one", (Button) findViewById(R.id.button1));
    buttons.put("two", (Button) findViewById(R.id.button2));
    //put all your buttons like this

    for(String btnKey: buttons.keySet()){
        buttons.get(btnKey).setOnClickListener(getClickListener(btnKey));
    }