Vineet Kaushik Vineet Kaushik - 1 month ago 39
Java Question

android getMenuInflater() in a fragment subclass - cannot resolve method

I am trying to inflate a menu in a class that inherits the

Fragment
class.
Here is my
OnCreateOptionsMenu()
method -

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


This raises the following error:


Cannot resolve method 'getMenuInflater()'


I tried :

MenuInflater inflater = getActivity().getMenuInflater();


but then Android Studio highlights
@Override
in red and states:


Method does not override method from its superclass


I also tried to create a
getMenuInflater
method in the same class and have it return
new MenuInflater(this)


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


but then the following error is thrown :


error: incompatible types: ForecastFragment cannot be converted to
Context

error: method does not override or implement a method from a supertype


What do I do?

Answer

The signature of your onCreateOptionsMenu doesn't look right. Take a look at the docs here

Take a look this 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);
}
Comments