Raviteja
Raviteja

Reputation: 107

Toolbar menu options are not showing up in fragmnets

I'm inflating a menu with menu items in Activity's toolbar and overwriting the options in fragment.But the new menu items are not showing up.

Activity

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.encounter_tabacivity_menu, menu);
    return true;
}

Fragment

  @Override
public void onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    menu.clear();    //remove all items
    getActivity().getMenuInflater().inflate(R.menu.encounter_frag_problemlist_menu, menu);
}

@Override
public void onResume() {
    super.onResume();
    getActivity().invalidateOptionsMenu();
}
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
        view = inflater.inflate(R.layout.fragment_problem_list, container, false);
        init();
        return view;
    }

Upvotes: 0

Views: 859

Answers (4)

Nikhil
Nikhil

Reputation: 3711

You might not have set your toolbar as your actionbar. To view your menu in your actionbar declare your toolbar as actionbar as follows

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

Upvotes: 3

Mayur Patel
Mayur Patel

Reputation: 2326

Try this code in your Fragment :

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
}


@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_record ) {
//            startActivity(new Intent(getActivity(),RecordingActivity.class));
            startActivity(new Intent(getActivity(),RecordingTestActivity.class));
            getActivity().finish();
            return true;
        }
        if (id == R.id.action_search ) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }




@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // Inflate the menu; this adds items to the action bar if it is present.
        inflater.inflate(R.menu.recording, menu);

        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
        if (searchItem != null) {
            searchView = (SearchView) searchItem.getActionView();
        }
        if (searchView != null) {
            searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));

            queryTextListener = new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextChange(String newText) {
                    Log.i("onQueryTextChange", newText);
                    return true;
                }
                @Override
                public boolean onQueryTextSubmit(String query) {
                    Log.i("onQueryTextSubmit", query);
                    return true;
                }
            };

            searchView.setOnQueryTextListener(queryTextListener);
        } super.onCreateOptionsMenu(menu, inflater);

    }

Upvotes: 0

Rahul Khurana
Rahul Khurana

Reputation: 8834

You must override this in fragment

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // TODO Add your menu entries here
    super.onCreateOptionsMenu(menu, inflater);
}

Upvotes: 0

Vitaliy  Ptitsin
Vitaliy Ptitsin

Reputation: 329

You need setHasOptionMenu(true) in your fragment.

   @Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

Upvotes: 0

Related Questions