InvalidateOptionsMenu не вызывается из фрагмента

У меня есть фрагмент, которому нужно создать собственную панель действий:

public class CalendarFragment extends Fragment { public CalendarFragment() { } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getActivity().supportInvalidateOptionsMenu(); setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.calendar_menu1, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { TextView textView = new TextView(getActivity()); textView.setGravity(Gravity.CENTER); textView.setText("Calendar Fragment"); return textView; } 

}

Проблема в том, что он не создает новое меню с элементами из calendar_menu1, а просто добавляет элементы из него в старое меню, как будто invalidateOptionsMenu не работает (я попробовал getActivity (). InvalidateOptionsMenu () тоже)

Solutions Collecting From Web of "InvalidateOptionsMenu не вызывается из фрагмента"

Вы должны позвонить в onCreate ():

 setHasOptionsMenu(true); 

Это нормально, глядя в javadoc MenuInflater : « Элементы и подменю будут добавлены в это меню »:

 public void inflate (int menuRes, Menu menu) Inflate a menu hierarchy from the specified XML resource. Throws InflateException if there is an error. Parameters menuRes Resource ID for an XML layout resource to load (eg, R.menu.main_activity) menu The Menu to inflate into. The items and submenus will be added to this Menu. 

Вы пытались вызвать menu.clear() раньше, чтобы раздуть меню фрагментов?

 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.clear(); inflater.inflate(R.menu.calendar_menu1, menu); }