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

后端 未结 4 727
萌比男神i
萌比男神i 2021-02-07 19:32

I am trying to inflate a menu in a class that inherits the Fragment class. Here is my OnCreateOptionsMenu() method -

@Override
public bo         


        
相关标签:
4条回答
  • 2021-02-07 19:59

    Use this code:

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

    where forecastID is the ID of the item in the menu forcastfragment.xml. Also add setHasOptionsMenu(true); in your OnCreateView() so that the fragment will call the method.

    As a side, it's standard practice to include the word 'menu' in your menu file names such as 'forecastfragment_menu.xml'. It avoids confusion.

    0 讨论(0)
  • 2021-02-07 20:02

    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);
    }
    
    0 讨论(0)
  • 2021-02-07 20:15

    In your fragment class add:

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.[IDMENU], menu) ;
    }
    

    Where [IDMENU] is the XML name of your menu.

    Next you need to add inside onCreate or onCreateView method this:

    setHasOptionsMenu(true);
    
    0 讨论(0)
  • 2021-02-07 20:20
    • According to API not overriding a super method.
    • You are not calling the correct method inflate.

    You must use it in this way:

    @Override
    public boolean OnCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.forecastfragment, menu);
        return true;
    }
    
    0 讨论(0)
提交回复
热议问题