我使用ViewPager
和Fragment
,
适配器:FragmentStatePagerAdapter
offScreenPagerLimit
:1
我想知道为什么ListView
布局中的Fragment
始终保存其位置?我怎么让它忘记这个状态?
public class BaseFragmentStatePagerAdapter<T extends Fragment> extends FragmentStatePagerAdapter {
static final boolean DEBUG = true;
private String[] mTitles;
private List<T> mFragments;
/**
* @param fm
*/
public BaseFragmentStatePagerAdapter(FragmentManager fm, List<T> fragments) {
super(fm);
mFragments = fragments;
}
/**
* @param fm
*/
public BaseFragmentStatePagerAdapter(FragmentManager fm, String[] titles, List<T> fragments) {
super(fm);
mFragments = fragments;
mTitles = titles;
}
@Override
public T getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments == null ? 0 : mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
if (mTitles == null || mTitles.length == 0) {
return super.getPageTitle(position);
} else {
return mTitles[position];
}
}
}
答案 0 :(得分:0)
如果offScreenPagerLimit
:1 ViewPager
将保持当前显示的Fragment
的状态(显然),左边一个,右一个。
答案 1 :(得分:0)
我相信,因为您正在使用FragmentStatePagerAdapter,即使您在其上调用手动销毁,也会保存片段的状态。
使用Fragment管理每个的PagerAdapter的实现 页。该类还处理片段的保存和恢复 状态。
该片段中包含的所有数据也是如此,包括ListView及其保存的索引。
一种解决方案是禁用listView的保存。
ListView listView = new ListView(getActivity());
listView.setSaveEnabled(false);
我希望这有效!