Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android getMenuInflater () en una subclase de fragmento – no se puede resolver el método

Estoy tratando de inflar un menú en una clase que hereda la clase Fragment . Aquí está mi método OnCreateOptionsMenu()

 @Override public boolean OnCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.forecastfragment, menu) ; return true; } 

Esto plantea el error siguiente:

No se puede resolver el método 'getMenuInflater ()'

Lo intenté :

 MenuInflater inflater = getActivity().getMenuInflater(); 

Pero Android Studio destaca @Override en rojo y indica:

El método no reemplaza el método de su superclase

También traté de crear un método getMenuInflater en la misma clase y tenerlo volver new MenuInflater(this)

 public MenuInflater getMenuInflater() { return new MenuInflater(this); } 

Pero entonces se produce el siguiente error:

Error: tipos incompatibles: ForecastFragment no se puede convertir en Context

Error: método no anula o implementa un método de un supertipo

¿Qué debo hacer?

3 Solutions collect form web for “Android getMenuInflater () en una subclase de fragmento – no se puede resolver el método”

La firma de su onCreateOptionsMenu no parece correcta. Echa un vistazo a los documentos aquí

Echa un vistazo a este código

 @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); } 
  • De acuerdo con API no overriding un método super .
  • No está llamando al método correcto inflate .

Debe utilizarlo de esta manera:

 @Override public boolean OnCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.forecastfragment, menu); return true; } 

Utilice este código:

 @Override public boolean OnCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.forecastfragment, menu) ; final MenuItem item = menu.findItem(R.id.forecastID); } 

Donde forecastID es el ID del elemento en el menú forcastfragment.xml. También agrega setHasOptionsMenu(true); En su OnCreateView() para que el fragmento llame al método.

Como un lado, es práctica estándar para incluir la palabra 'menú' en los nombres de archivo de menú como 'forecastfragment_menu.xml'. Evita la confusión.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.