J'essaie de gonfler un menu dans une classe qui hérite de la classe Fragment
. Voici ma méthode OnCreateOptionsMenu()
-
@Override
public boolean OnCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.forecastfragment, menu) ;
return true;
}
Cela soulève l'erreur suivante:
Impossible de résoudre la méthode 'getMenuInflater ()'
J'ai essayé :
MenuInflater inflater = getActivity().getMenuInflater();
mais alors Android Studio met en surbrillance @Override
en rouge et indique:
La méthode ne remplace pas la méthode de sa superclasse
J'ai également essayé de créer une méthode getMenuInflater
dans la même classe et de la renvoyer new MenuInflater(this)
public MenuInflater getMenuInflater() {
return new MenuInflater(this);
}
mais alors l'erreur suivante est levée:
erreur: types incompatibles: ForecastFragment ne peut pas être converti en contexte
erreur: la méthode ne remplace pas ou n'implémente pas une méthode à partir d'un supertype
Que fais-je?
La signature de votre onCreateOptionsMenu
ne semble pas correcte. Jetez un œil aux documents ici
Jetez un oeil à ce code
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);//Make sure you have this line of code.
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Add your menu entries here
super.onCreateOptionsMenu(menu, inflater);
}
Dans votre classe de fragments, ajoutez:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.[IDMENU], menu) ;
}
Où [IDMENU] est le nom XML de votre menu.
Ensuite, vous devez ajouter à l'intérieur de la méthode onCreate ou onCreateView ceci:
setHasOptionsMenu(true);
Utilisez ce code:
@Override
public boolean OnCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.forecastfragment, menu) ;
final MenuItem item = menu.findItem(R.id.forecastID);
}
où prévisionID est l'ID de l'élément dans le menu forcastfragment.xml. Ajoutez également setHasOptionsMenu(true);
dans votre OnCreateView()
pour que le fragment appelle la méthode.
En parallèle, il est de pratique courante d'inclure le mot "menu" dans les noms de fichiers de votre menu tels que "Forecastfragment_menu.xml". Cela évite la confusion.