Android更好的按钮点击方式?

时间:2013-03-24 02:31:53

标签: android button click

所以现在我正在整理一些代码,我有很多其他/ ifs按钮,并想知道什么是一个好方法来做它并使它更整洁?

所以我有12个按钮,每个按钮播放声音并在点击时改变颜色。我有一个方法,但我想知道是否有一个很好的方法来检测按钮而不是if / else?

public void onClick(View v) {
    int id = v.getId();
    changeToWhite();
    if (id == R.id.a_button) {
        currentButton(a, 81);
    } else if (id == R.id.aSharp_button) {
        currentButton(aSharp, 82);
    } else if (id == R.id.b_button) {
        currentButton(b, 83);
    } else if (id == R.id.c_button) {
        currentButton(c, 72);
    }

等等...

那么有更好的方法吗?我知道有很多其他/ ifs是坏的所以我想尝试改进它。 谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用" switch-case"代替。

>

public void onClick(View v) {
switch(v.getId())
{
case R.id.a_button:
changeToWhite();
break;
case R.id.aSharp_button:
currentButton(aSharp,82);
break;
.....
default:
break;
}

}

答案 1 :(得分:1)

如何使用案例陈述呢?

    public void onClick(View v) {
       // Perform action on click
      switch(v.getId()) {
        case R.id.a_button:
          currentButton(a, 81);
          break;
        case R.id.aSharp_button:
          currentButton(aSharp, 82);
          break;
        /*
          and the rest of the cases here.
        */

      }
   }

答案 2 :(得分:1)

我假设你正在使用XML并设置onClick属性。

更简单/更整洁的方法是使用anonymous inner classes

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_foo);

    findViewById(R.id.view_buttonone).setOnClickListener(new OnClickListener(){
        public void onClick(View view){
            // button one clicked
        }
    });

    findViewById(R.id.view_buttontwo).setOnClickListener(new OnClickListener(){
        public void onClick(View view){
            // button two clicked
        }
    });
}

答案 3 :(得分:1)

首先,使用if / else嵌套有几乎没有惩罚。没有必要尝试这种级别的微管理您的应用程序。你不会从中获益。尝试更多地考虑在可读性方面优化这一点。

现在,要回答您的问题,您可以使用开关/案例构造。

public void onClick(View v) {
    switch (item.getItemId()) {

        case R.id.aBar_item1:
         //Item onClick logic
         return true;

        case R.id.aBar_item2:
        //Item onClick logic
        return true;

        case R.id.aBar_item3:
        //Item onClick logic
        return true;

        ...
    }  
}