2012-12-24 52 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那么。谢谢你纠正我。它工作完美! –