【发布时间】:2015-01-23 11:29:42
【问题描述】:
围绕这个话题有不少讨论
- ViewPager PagerAdapter not updating the View
- Update ViewPager dynamically?
- Removing fragments from FragmentStatePagerAdapter
我尝试了各种解决方案(包括POSITION_NONE 的失效)
.但我仍然不知道如何正确删除项目。
会发生什么
- 要么我得到一个空白页(这意味着片段被破坏,但
instantiateItem没有被要求更换) - 或者整个事情崩溃可能是因为 Android 管理
片段实例与我保存它们的方式不匹配
arraylist/sparsearray
这是我的适配器
private class DatePickerPagerAdapter extends FragmentStatePagerAdapter {
ArrayList<Fragment> registeredFragments = new ArrayList<Fragment>();
public DatePickerPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return CreateWishFormDatePaginationFragment.newInstance(position);
}
@Override
public int getItemPosition(Object object){ //doesnt change much..
return PagerAdapter.POSITION_NONE;
}
@Override
public int getCount() {
return iPageCount;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
registeredFragments.add(position, fragment);
return fragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, registeredFragments.get(position));
}
public void removePage(ViewGroup pager, int position) {
destroyItem(pager, position, null);
registeredFragments.remove(position);
iPageCount--;
pagerIndicator.notifyDataSetChanged();
pagerAdapter.notifyDataSetChanged();
}
public void addPage() {
iPageCount++;
pagerIndicator.notifyDataSetChanged();
pagerAdapter.notifyDataSetChanged();
}
}
例如,我正在使用带有 ViewPagerIndicator 的视图寻呼机,并且我希望能够删除介于两者之间的页面。
因此问题仍然存在,在 ViewPager 中处理添加和删除片段的正确方法是什么?
谢谢!
【问题讨论】:
标签: android android-fragments android-viewpager android-adapter