Intereting Posts
Измените структуру файла проекта после перехода с Eclipse на структуру студий Android Studio Android: программно удалить мое приложение от администратора устройства? ActionBarSherlock – стиль содержит ключ с плохой записью Создание Android-библиотеки AAR, включая javadoc и источники Как решить ошибку: "!!! НЕИСПРАВНОСТЬ СДЕЛКА СДЕЛКИ !!! "В android 4.4 Можно ли сделать эту анимацию для Android с помощью ViewPager? Android: onCreate () вызывается несколько раз (а не мной) Как открыть уже открытую деятельность вместо создания новой? Rid.container не разрешен Разница между android: id, android: имена и теги имен в файлах Android XML Не удается установить мой собственный сгенерированный apk Android, как отправить несколько контактов, подключен в один файл .vcf и отправляется по почте? Поддиректория Android 4.0 (раздел) Стиль стилей Высота экрана без строки состояния, actionBar и вкладок Где находится предварительный просмотр макета Android Studio?

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(); }