Я использую sherlockfragmentactivity, у которого есть ViewPager, два фрагмента и ActionBar, отображающий две вкладки. Я заселить действия, элементы из фрагмента, но я должен вызвать методActionItem потерян на экране вращения
setHasOptionsMenu(true);
в порядке, чем дисплей фрагмента в том ActionBar MenuItem. Но когда меняется ориентация экрана, элементы MenuItems не отображаются.
Вот мой код, чтобы создать меню опции в моем первом фрагменте:
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.add(R.string.action_refresh).setIcon(R.drawable.ic_menu_refresh)
.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
refresh();
return false;
}
}).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add(R.string.action_add_a_file).setIcon(R.drawable.ic_menu_upload)
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add(R.string.action_settings).setIcon(android.R.drawable.ic_menu_preferences)
.setIntent(new Intent(getSherlockActivity(), SettingsActivity.class))
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_NEVER | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
}
Есть ли способ, чтобы правильно добавить элемент на панель действий от SherlockFragment и как я могу сохранить эти элемента в ActionBar после изменение ориентации экрана?
Я не знаю, является ли это лучшим решением, но поскольку у меня есть известное фиксированное количество фрагментов, я создаю их в методе 'onCreate' на моем SherlockActivity и вызываю после инициализации:' invalidateOptionsMenu(); 'Тогда в метод 'onActivityCreated' моих фрагментов, после того, что мне нужно сделать, я называю' setHasOptionsMenu (true); '. Таким образом, мои ActionItems отображаются для каждого фрагмента даже после ориентации экрана. – Kowlown