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
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire
findViewById()
d'un menu, car c'est un menu, pas d'un point de vue. Et vous pouvez changer le menu de l'etat lors de sa création ou de la préparation. Par exemple, si vous créez un menu d'options, vous pouvez le faire dans leActivity: onPrepareOptionsMenu()
méthode: