У меня есть фрагмент списка слева от другого фрагмента и по существу является стандартным щелчком элемента и обновляется правильный фрагмент фрагмента. Когда они нажимают на элемент в фрагменте списка, они выбирают категорию статей новостей, и мне нужно сохранить все, что выбрано, когда они поворачивают устройство. Как мне это сделать? Мой текущий код не работает.Сохранение фрагмента выбранного фрагмента списка при изменении ориентации
Моего код выглядит следующим образом:
public class SideMenuFragment extends ListFragment {
ArrayList<SideItem> sideItems;
SideAdapter sideAdapter;
public SideMenuFragment() {
this.setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.list, null);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
sideItems = new ArrayList<SideItem>();
...add bunch of items
sideAdapter = new SideAdapter(getActivity(), sideItems);
getListView().setVerticalScrollBarEnabled(false);
setListAdapter(sideAdapter);
if (savedInstanceState != null) {
sideAdapter.setSelectedItem(savedInstanceState.getInt("sidePosition"));
sideAdapter.notifyDataSetChanged();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("sidePosition", sideAdapter.getSelectedItem());
}
@Override
public void onListItemClick(ListView lv, View v, int position, long id) {
if (sideAdapter.getSelectedItem() != position) {
sideAdapter.setSelectedItem(position);
sideAdapter.notifyDataSetChanged();
}
switch (position) {
...switch the fragment depending on position.
}
}
// the meat of switching the above fragment
private void switchFragment(Fragment fragment, String title) {
if (getActivity() == null)
return;
if (getActivity() instanceof HomeActivity) {
HomeActivity a = (HomeActivity) getActivity();
a.switchContent(fragment, title);
}
}
}
В настоящее время, попробовав некоторые из этих изменений, вскоре сообщит об этом. – egfconnor
После добавления setRetainInstnace (true) и добавления нулевой проверки адаптера все отлично работает сейчас. Я тоже не изменил onCreateView. – egfconnor
Oncreateview - это не связанная (но рекомендуемая) оптимизация. –