ListViewのスクロール位置が失われるViewPagerに問題があります。
ListViewの状態は、次を使用して簡単に保存および復元できます。
@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());
}
ただし、問題は、フラグメントがスワイプされているときonDestroyView()
に呼び出されますが、呼び出されないことonSaveInstanceState (Bundle outState)
です。
画面を回転させるなどしてListView
状態は正常に復元されますが、スワイプするとリストを正しく復元する方法がわかりません。