Java 如何在单击时更改ImageButton图像。我的代码不起作用

Java 如何在单击时更改ImageButton图像。我的代码不起作用,java,android,Java,Android,我不明白为什么我的代码不起作用。我已经声明了一个ImageButton,当用户点击图像时,我要增加valHomeFouls。当valHomeFouls>5时,它被重置为0 出于某种原因,它不会更改图像onClick // set the onClick listener for the foulsHome ImageButton btnFoulsHome.setOnClickListener(new View.OnClickListener() { @Overr

我不明白为什么我的代码不起作用。我已经声明了一个ImageButton,当用户点击图像时,我要增加
valHomeFouls
。当
valHomeFouls>5
时,它被重置为0

出于某种原因,它不会更改图像onClick

    // set the onClick listener for the foulsHome ImageButton
    btnFoulsHome.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            valFoulsHome++;

            if( valFoulsHome > 5 )
                valFoulsHome = 0;

            switch( valFoulsHome ) {
                case 5:
                    btnFoulsHome.setImageResource(R.drawable.fouls5);
                case 4:
                    btnFoulsHome.setImageResource(R.drawable.fouls4);
                case 3:
                    btnFoulsHome.setImageResource(R.drawable.fouls3);
                case 2:
                    btnFoulsHome.setImageResource(R.drawable.fouls2);
                case 1:
                    btnFoulsHome.setImageResource(R.drawable.fouls1);
                case 0:
                    btnFoulsHome.setImageResource(R.drawable.fouls0);
            }
        }
    });

有人知道为什么吗?

您忘记了
break
语句:

switch( valFoulsHome ) {
    case 5:
        btnFoulsHome.setImageResource(R.drawable.fouls5);
        break;
    case 4:
        btnFoulsHome.setImageResource(R.drawable.fouls4);
        break;
    case 3:
        btnFoulsHome.setImageResource(R.drawable.fouls3);
        break;
    case 2:
        btnFoulsHome.setImageResource(R.drawable.fouls2);
        break;
    case 1:
        btnFoulsHome.setImageResource(R.drawable.fouls1);
        break;
    case 0:
    default: // You should always have a default case
        btnFoulsHome.setImageResource(R.drawable.fouls0);
}
如果没有
break
语句,则案例“失败”。这意味着如果
valFoulsHome==2
代码调用以下每一行:

btnFoulsHome.setImageResource(R.drawable.fouls2);
btnFoulsHome.setImageResource(R.drawable.fouls1);
btnFoulsHome.setImageResource(R.drawable.fouls0);

哪个不是您想要的…

valFoulsHome++是否声明为静态变量?valFoulsHome初始化为什么?在每种情况下添加
break
,感谢您的帮助!我没有忘记中断声明,我只是不正确的行为没有他们。我认为,一旦valFoulsHome==5,其他人就不会触发,因为他们不触发,那么对于4,3,2,1或0,情况就不是这样了。谢谢你纠正我。它工作完美!