ListFragment onPrepareOptionsMenu вызывается перед onCreate. Почему и как исправить / обойти?
Хорошо, так что яу нас есть список ИзбранноеList, расширяющий GalleryList, который расширяет ListFragment:
public static class FavoritesList extends GalleryList {
public static FavoritesList newInstance(int page) {
FavoritesList list = new FavoritesList();
Bundle args = new Bundle();
args.putInt("page", page);
list.setArguments(args);
return list;
}
@Override
public void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
Cursor cursor = dbHelper.getGalleries(fav, preferences.getString("sort"+fav, "date desc"));
listAdapter = new GalleryListAdapter(activity, cursor);
setListAdapter(listAdapter);
}
...
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.add(Menu.NONE, 0, 8, "Remove All");
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
//listAdapter is null the first time this is called...
if (listAdapter != null && listlistAdapter.getCount() == 0) {
menu.findItem(R.id.filter).setEnabled(false);
menu.findItem(0).setEnabled(false);
}
else {
menu.findItem(R.id.filter).setEnabled(true);
menu.findItem(0).setEnabled(true);
}
}
}
Вот проблема: вызывается onPrepareOptionsMenuдо onCreate (где я инициализирую listAdapter) при загрузке этого фрагмента, и онне вызывается снова, прежде чем меню опций будет показано в первый раз!
Фрагмент документации просто неправильно, когда он заявляет оPrepareOptionsMenu "называетсяпрямо перед меню отображается,каждый раз это показано."
постскриптум Я'm с помощью библиотеки поддержки Android (v4). Есть идеи?