Intereting Posts
Как отправить JSon как BODY В запросе POST на сервер из приложения Android? Ошибка компиляции AAPT2: неверный размер на Android 3.0 Canary 1 в Windows Приложение загружает неправильные текстуры при открытии снова Преобразование Xamarin.Forms.Color в цвет конкретной платформы Тяжесть TextView Что вызывает ошибки «постоянного выражения» для генерируемых значений R.id.xxx в операторах switch? Эффективно отправлять большие int поверх сокетов в Java Как установить несколько родительских действий для использования кнопки андроида Работает ли proguard для обфускации статических строковых констант? Что такое Neon в отношении Android? Как управлять отладкой и выпуском версии на устройстве Android? Android Studio импортирует существующие модульные тесты «Невозможно найти информацию об оборудовании» Как обеспечить различные значки приложений для Android для разных шаблонов gradle buildTypes? Показывать изображение с заставкой с автоматической установкой Как найти имя контакта с номера телефона на Android?

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