Définir un élément de menu comme coché du code

J'ai une application Android avec l'élément suivant du menu à l'une des Activités (qui concerne la manipulation d'une liste de noms et de mac numéros):

<item android:id="@+id/menu_sort_tagg"
      android:icon="@android:drawable/ic_menu_sort_by_size"
      android:title="@string/menu_sort_list" >
      <menu> 
        <group android:checkableBehavior="single">
            <item android:id="@+id/sort_by_name"
                  android:title="@string/sort_by_name" />
            <item android:id="@+id/sort_by_mac"
                          android:title="@string/sort_by_mac" />

     </menu>
</item>

et que l'état de l'application des changements, je veux être en mesure de pré-enregistrer l'élément dans les options de tri de la liste qui a été utilisé la dernière fois avec le code suivant:

((MenuItem)findViewById(R.id.sort_by_name)).setChecked(true);

Le problème est que cette ligne me donne une exception d'exécution. Quelqu'un a une idée pourquoi?

Un oeil sur le journal révèle que les exceptions d'exécution est déclenchée par une exception de pointeur null. En modifiant le code de cette façon:

MenuItem mi = (MenuItem)findViewById(R.id.sort_by_name);
mi.setChecked(true);

il devient clair que l'exception se produit dans les secondes déclaration, à savoir, la MenuItem mi est null. Alors pourquoi échoue à la première déclaration d'apporter un pointeur vers le bon MenuItem?

source d'informationauteur Robert Granat | 2011-05-27