2012-12-24 53 views
2

我找不出爲什麼我的代碼不工作。我已經聲明瞭一個ImageButton,並且當用戶點擊圖像時,我將增加valHomeFouls。當valHomeFouls > 5然後它被重置爲0.如何更改ImageButton圖片onclick。我的代碼不起作用

由於某些原因它不會更改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); 
      } 
     } 
    }); 

任何人都可以看到爲什麼嗎?

+0

是valFoulsHome ++聲明爲靜態變量? – Kcvin

+1

什麼是'valFoulsHome'初始化爲? – Sam

+1

在每種情況下都加上'break' – Houcine

回答

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); 

這是不是你想要的...

+0

感謝您的幫助!我沒有忘記那些沒有他們的行爲的錯誤陳述。我認爲,一旦valFoulsHome == 5,其他人不會觸發,因爲他們不是他們的情況下不是真正的4,3,2,1或0那麼。謝謝你糾正我。它工作完美! –