L'état vérifié de MenuItem n'est pas affiché correctement par son icône

J'ai MenuItem définie de cette manière:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_starred"
        android:icon="@drawable/btn_star"
        android:title="@string/description_star"
        android:checkable="true"
        android:checked="true"
        android:orderInCategory="1"
        android:showAsAction="always" />
</menu>

et btn_star.xml définie de cette manière:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:state_checked="false" 
        android:drawable="@drawable/btn_star_off_normal" />
    <item 
        android:state_checked="true"
        android:drawable="@drawable/btn_star_on_normal" />
</selector>

Quand j'ai créer un menu d'options à l'aide de ceci, cependant, l'icône ne s'affiche jamais dans son état activé, même si le MenuItem's isChecked() propriété est vraie.

Je suis en utilisant le ActionBarSherlock de contrôle, cependant, j'obtiens le même résultat si il suffit de créer un normal des options de menu et d'appel setChecked(true). Il affiche toujours le btn_star_off drawable indépendamment de l'état activé de l'élément.

La onOptionsItemSelected() méthode est appelée correctement, et je peux réussir à modifier la propriété checked:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.isCheckable()) {
            item.setChecked(!item.isChecked());
        }
        return super.onOptionsItemSelected(item);
}

Fixer un point d'arrêt montre ici la propriété isChecked être changé, mais l'icône elle-même n'est pas mis à jour pour refléter l'état correct.

Il y a une chose qui me manque ici? Fais-je une erreur? Je ne peux pas comprendre pourquoi cela ne fonctionne pas correctement.

source d'informationauteur Joe Krill