OnCreateOptionsMenu вызывается после onResume на JB 4.2

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

public class MyFragment extends SherlockListFragment implements LoaderManager.LoaderCallbacks<Cursor> { private MenuItem refresh = null; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setHasOptionsMenu(true); //..... // NPE here refresh.setActionView(R.layout.indeterminate_progress_action); getActivity().getSupportLoaderManager().initLoader(0, null, this); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.refresh_menu, menu); refresh = (MenuItem) menu.findItem(R.id.menu_item_refresh); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { mAdapter.swapCursor(data); refresh.setActionView(null); } } 

В основном, когда пользователь запускает Activity, я хочу отобразить счетчик прогресса на панели действий до завершения загрузчика. До Android 4.2 все работало нормально. На Android 4.2 я получаю следующую ошибку:

 11-24 13:37:14.811: E/AndroidRuntime(17850): Caused by: java.lang.NullPointerException 11-24 13:37:14.811: E/AndroidRuntime(17850): at com.MyApp.library.fragments.MyFragment.onActivityCreated(TabFragment.java:65) 

После добавления некоторой точки прерывания я понял, что onCreateOptionsMenu получает вызов после onActivityCreated. Есть ли еще один жизненный цикл, который я могу использовать? Лучше ли было добиться желаемого эффекта?

Solutions Collecting From Web of "OnCreateOptionsMenu вызывается после onResume на JB 4.2"

Я использовал onPrepareOptionsMenu таким образом, чтобы достичь того, что вы пытаетесь сделать. (Не тестировалось, но должно дать вам представление.)

 private boolean mIsLoading = true; @Override public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); refresh = (MenuItem) menu.findItem(R.id.menu_item_refresh); if (!mIsLoading) { refresh.setActionView(null); } } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { mAdapter.swapCursor(data); mIsLoading = false; getActivity().invalidateOptionsMenu(); }