Android: bouton de changement de fond par programmation

J'ai ce fichier de ressources pour les couleurs

<resources>
    <color name="CLR_BLUE">#00f</color>
    <color name="CLR_RED">#f00</color>
    <color name="CLR_GREEN">#0f0</color>
    <color name="CLR_YELLOW">#ff0</color>
    <color name="CLR_BLUE_DARK">#00a</color>
    <color name="CLR_RED_DARK">#a00</color>
    <color name="CLR_GREEN_DARK">#0a0</color>
    <color name="CLR_YELLOW_DARK">#aa0</color>
</resources>

Et cette méthode qui est appelée lorsque l'utilisateur clique sur l'un des quatre couleur Buttons

private void changeBackground(Button pressedBtn)
{
    int oldColor = 0;
    int newColor = 0;

    if(pressedBtn == greenBtn) {
        oldColor = R.color.CLR_GREEN;
        newColor = R.color.CLR_GREEN_DARK;
    }
    else if (pressedBtn == redBtn) {
        oldColor = R.color.CLR_RED;
        newColor = R.color.CLR_RED_DARK;
    }
    else if (pressedBtn == yellowBtn) {
        oldColor = R.color.CLR_YELLOW;
        newColor = R.color.CLR_YELLOW_DARK;
    }
    else if (pressedBtn == blueBtn) {
        oldColor = R.color.CLR_BLUE;
        newColor = R.color.CLR_BLUE_DARK;
    }
    else return;

    pressedBtn.setBackgroundResource(newColor);
    SystemClock.sleep(500);
    pressedBtn.setBackgroundResource(oldColor);

}

Le problème, c'est la couleur du Bouton ne change pas lorsque vous appuyez dessus.
J'ai marché avec un débogueur et il atteint réellement les points de droit dans la méthode, ce n'est donc pas un problème. Je pense que le problème est dans pressedBtn.setBackgroundResource(newColor) mais je ne comprends pas pourquoi.

PS: de toute façon, si vous avez une meilleure solution pour modifier un bouton de couleur quand ils sont pressés et, après une demi-seconde, le changement de couleur d'origine, faites le moi savoir.

OriginalL'auteur Federico klez Culloca | 2010-06-22