2

我不知道为什么我的代码不起作用。我已经声明了一个 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);
            }
        }
    });

谁能明白为什么?

4

1 回答 1

9

您忘记了以下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);

这不是你想要的...

于 2012-12-24T23:21:51.267 回答