J'essaie d'activer / désactiver un bouton de rafraîchissement lorsque certaines choses se produisent dans mon application, mais je reçois une exception de pointeur Null que je ne peux pas comprendre. Je fixe un booléen Code pour addingrefresh code> ou
retihadrefresh code> sur true en fonction de la situation, puis appelant
invalidateOptionsMenu () code> Pour activer ou désactiver le bouton, mais L'élément de menu est renvoyé null. J'ai cherché Internet pour pourquoi cela peut être mais ne peut rien trouver.
OncreateOptionsMenu () Code> (appelé quand InvalidateOptionsMenu () est appelé) P>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (addingRefresh) {
//below line as well as other similar line cause exceptions
menu.findItem(R.id.action_refresh).setEnabled(true);
addingRefresh = false;
} else if (removingRefresh) {
menu.findItem(R.id.action_refresh).setEnabled(false);
removingRefresh = false;
} else if (addingLoading) {
}
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
3 Réponses :
Voici un code nettoyé pour ce que vous essayez d'accomplir: espère que cela aide! p> p>
@RAVENSGO GRAND! Joyeux codage!
juste pour effacer le doute.
Vous devez utiliser après gonfler le menu p> p>
Pour moi, une cause de problème était une erreur importante: android.widget.SearchView p>
à la place androidx.appcompat.widget.SearchView p>
et prenez soin des espaces de noms App: ActionviewClass P>
OnprepareOptionsMenu () est appelé lorsque InvalidateOptionsMenu () est appelé; OncreateOptionsMenu () est seulement appelé une fois.
De plus, vous gonflez le menu après avoir essayé de trouver l'article. Ça ne peut pas être bon. Une seconde et je posterai une réponse plus approfondie.
Il a exécuté cette ligne de code à la bonne heure à OncreateOptionsMenu (), il a donc dû être appelé d'une manière ou d'une autre ... Je vais essayer d'utiliser OnprepareOptionsMenu () Merci!
Juste un indice: Gonflez d'abord, puis faites la manipulation. Vous avez
nullpointException code> car il n'y a pas d'élément dans le menu lorsque vous appelez
menu.finditem () code>.