Mam problem z ViewPager, gdzie mój ListView traci pozycję przewijania.Fragment nie wywołuje metody onSaveInstanceState podczas przesuwania programu ViewPager?
Stan ListView mogą być łatwo zapisane i przywrócone przy użyciu:
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.frag_cool_things, container, false);
AdvListView listView = (AdvListView) v.findViewById(R.id.lv0);
listView.setOnItemClickListener(mOnListItemClicked);
if (null != savedInstanceState)
{
listView.onRestoreListViewInstanceState(savedInstanceState.getParcelable("list_state"));
}
mListView = listView;
return v;
}
@Override
public void onSaveInstanceState (Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putParcelable("list_state", mListView.onSaveListViewInstanceState());
}
Jednak problemem jest to, że kiedy fragmenty są przeciągnął onDestroyView()
jest wywoływana, ale nigdy nie zwraca onSaveInstanceState (Bundle outState)
.
Obracanie ekranu i takie przywraca stan ListView
dobrze, ale przesuwając Nie mogę wymyślić, jak poprawnie przywrócić listę.
Moje własne rozwiązanie tymczasowe, to po prostu napisać moje rzeczy do SharedPreferences w OnPause(), i uzyskać je z powrotem w OnCreateView (...). To jednak zmusza cię do uzyskania dostępu do działania dołączania w celu uzyskania właściwości SharedPreferences (getActivity(). GetSharedPreferences (...)), a także może być konieczne jawne usunięcie niepożądanych rzeczy, gdy działanie zostanie zerwane (w zależności od tego, co robisz przechowywanie, ofc). Mam nadzieję, że ktoś ma lepszy sposób! :) –
Proszę zobaczyć zaktualizowaną odpowiedź :) – Jona
"FragmentPagerAdapter odłączy każdy fragment podczas przesuwania po liście, ale zachowa je w pamięci, aby można było je po prostu ponownie dołączyć, gdy użytkownik odsuwa z powrotem .Jeśli masz większą liczbę Fragmentów, FragmentStatePagerAdapter jest warty rozważenia, ponieważ usunie je, a wadą jest to, że trzeba je przebudować, kiedy użytkownik odsuwa je z powrotem, więc jeśli masz mniej, bardziej złożonych fragmentów, FragmentPagerAdapter ma sens, ale rozważ FragmentStatePagerAdapter dla większych zestawów. " (Blog Androida Dev) –