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 に答える