Android更好的按钮点击方式?

Android更好的按钮点击方式?,android,button,click,Android,Button,Click,所以现在我正在整理一些代码,我有很多关于按钮的else/ifs,我想知道什么是一个好方法来做到这一点并使其更整洁 所以我有12个按钮,每个按钮都会在点击时播放声音并改变颜色。我有一个方法,但我想知道是否有一个好方法,只检测按钮,而不是if/else public void onClick(View v) { int id = v.getId(); changeToWhite(); if (id == R.id.a_button) { currentButt

所以现在我正在整理一些代码,我有很多关于按钮的else/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);
    }
等等

那么,有没有更好的方法?我知道有很多其他的/如果是不好的,所以我想尝试改进它。 谢谢

您可以改用“开关盒”

>

}

您可以改用“开关盒”

>


}用case语句代替怎么样

    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.
        */

      }
   }

用case语句代替它怎么样

    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.
        */

      }
   }

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

一种更简单/整洁的方法是使用


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

一种更简单/整洁的方法是使用


首先,使用if/else嵌套几乎没有任何惩罚。没有必要尝试对应用程序进行这种级别的微观管理。你不会从中受益。试着从可读性的角度考虑优化这一点

现在,为了回答您的问题,您可以使用switch/case构造

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;

        ...
    }  
}

首先,使用if/else嵌套几乎没有任何惩罚。没有必要尝试对应用程序进行这种级别的微观管理。你不会从中受益。试着从可读性的角度考虑优化这一点

现在,为了回答您的问题,您可以使用switch/case构造

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;

        ...
    }  
}


对于初学者,可以使用
switch
语句。对于初学者,可以使用
switch
语句。可以使用switch case?有人告诉我它在Android中不工作!如果它工作,当当点击进入太快。谢谢@AndyOHart-如果您的R.id是在库项目中生成的(它们是非最终的),则switch案例将不起作用,但在switch语句中使用您自己的R.id会很好。您可以使用switch案例吗?有人告诉我它在Android中不工作!如果它工作,当当点击进入太快。谢谢@AndyOHart-如果您的R.id是在库项目中生成的(它们不是最终的),那么switch案例将不起作用,但是在switch语句中使用您自己的R.id就可以了。您可以使用case语句吗?有人告诉我你不能在安卓系统中使用它们!如果这样行的话,那就太好了:)多谢了!只有当您的项目是库项目时,才可以使用swith/case。@Bruno Mateus这到底是什么意思?正如@ianhanniballake之前更好地解释的那样。“如果您的R.id是在库项目中生成的(在库项目中它们不是最终的),那么切换案例将不起作用,但是在切换语句中使用您自己的R.id就可以了”您可以使用案例语句吗?有人告诉我你不能在安卓系统中使用它们!如果这样行的话,那就太好了:)多谢了!只有当您的项目是库项目时,才可以使用swith/case。@Bruno Mateus这到底是什么意思?正如@ianhanniballake之前更好地解释的那样。“如果你的R.id是在图书馆项目中生成的(它们不是最终的),那么转换案例将不起作用,但在转换声明中使用你自己的R.id将很好。”我想更改它的唯一原因是因为它是为大学准备的,他们说如果他们看到很多if/else声明,我们可能会受到很大的惩罚。但是对于像这样的东西,如果它点击一个按钮,我不确定是否有更好的方法。我想改变它的唯一原因是因为它是为了上大学,他们说如果他们看到很多if/else语句,我们可能会受到很大的惩罚。但是对于像这样的东西,它会点击一个按钮,我不确定是否有更好的方法