How to add Action bar options menu in Android Fragments
android, android-actionbar, android-fragments, android-optionsmenu
Solution
You need to call `setHasOptionsMenu(true)` in `onCreate()`.
For backwards compatibility it's better to place this call as late as possible at the end of `onCreate()` or even later in `onActivityCreated()` or something like that.
See: https://developer.android.com/reference/android/app/Fragment.html#setHasOptionsMenu(boolean)
Problem
I am trying to have a options menu in Android Fragments. `ActionBar` options menu are not displaying in my Fragments. Here is my code and I have both `onCreateOptionsMenu()` and `onOptionSelected()` function. My code doesn't shows any error. But options menu are not displaying. ``` package org.reachout; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import org.general.R; public class ViewMessageFragment extends Fragment { /* (non-Javadoc) * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (container == null) { // We have different layouts, and in one of them this // fragment's containing frame doesn't exist. The fragment // may still be created from its saved state, but there is // no reason to try to create its view hierarchy because it // won't be displayed. Note this is not needed -- we could // just run the code below, where we would create and return // the view hierarchy; it would just never be used. return null; } return (LinearLayout)inflater.inflate(R.layout.viewmessages_tab_fragment_layout, container, false); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // TODO Auto-generated method stub super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.askexperts_menu, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // handle item selection switch (item.getItemId()) { case R.id.action_settings: // do s.th. return true; default: return super.onOptionsItemSelected(item); } } } ```