Ich habe folgendes Fragment in meiner Anwendung:onCreateOptionsMenu genannt nach onResume auf 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);
}
}
Grundsätzlich, wenn der Benutzer startet die Aktivität Ich möchte einen Fortschritt Spinner angezeigt werden, in der Aktionsleiste, bis der Lader abgeschlossen ist. Vor Android 4.2 hat alles gut funktioniert. Auf Android 4.2 bekomme ich folgende Fehlermeldung:
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)
Nach einiger Bruchstelle Zugabe wurde mir klar, onCreateOptionsMenu wurde nach onActivityCreated genannt zu werden. Gibt es ein anderes Lebenszyklus-Ereignis, das ich verwenden kann? Gibt es eine bessere Lösung, um den gewünschten Effekt zu erzielen?
Ähm, warum Ihr 'setActionView nicht bewegen()' Aufruf 'onCreateOptionsMenu()', dann? Und vielleicht abhängig davon, ob die Ladung getan wird oder nicht? – CommonsWare
Kinda funktioniert. Es scheint so, als würde 'onCreateOptionsMenu' auch nach' onLoadFinished' aufgerufen. Da ich Registerkarten mit mehreren Ladeprogrammen habe, ist 'hasRunningLoaders' nicht nützlich, um festzustellen, ob die Ladeoperation beendet ist. Ich denke, ich muss einen booleschen Wert verwenden, um den Zustand zu verfolgen. – Frohnzie
Android-Problem: http://code.google.com/p/android/issues/detail?id=39721 – Frohnzie