12
votes

Menu.finditem (R.Id. *) est NULL- Android

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 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.

Code pour 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);
}


4 commentaires

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 car il n'y a pas d'élément dans le menu lorsque vous appelez menu.finditem () .


3 Réponses :


8
votes

Voici un code nettoyé pour ce que vous essayez d'accomplir: xxx

espère que cela aide!


1 commentaires

@RAVENSGO GRAND! Joyeux codage!



6
votes

juste pour effacer le doute. Vous devez utiliser xxx

après gonfler le menu


0 commentaires

0
votes

Pour moi, une cause de problème était une erreur importante: android.widget.SearchView

à la place androidx.appcompat.widget.SearchView

et prenez soin des espaces de noms App: ActionviewClass


0 commentaires