我们的应用程序有多个片段来显示特定于位置的数据。我们使用了FragmentStatePagerAdapter和ViewPager。用户应该能够添加新页面并删除。添加新页面工作正常,删除现有页面会显示问题。当我确认我有3页。我从左侧导航菜单按钮中删除了第二个。当我尝试滑动到第3页时,它显示第二页的删除页面视图。并且它没有显示第3页。
我有Overriden getItem(),我返回新页面。我在添加/删除新页面到Adapter时调整了ItemCount。我在添加/删除之前调用了startUpdate(),在完成所有操作之后,destroy()删除了某个位置的任何片段对象,finishUpdate()。最后是notifyDataSetChanged()。
看起来没什么可错过但有些东西。我仍然看到已删除片段的视图,旁边是空白页面或类似的东西,具体取决于我删除的位置页面。 我看到Removing fragments from FragmentStatePagerAdapter是类似的东西,但对我的情况无能为力。帮助我解决任何问题。
答案 0 :(得分:0)
我可以解决它。虽然Wize在Replace Fragment inside a ViewPager的回答并没有解决我的问题,但我可以从中找到一个提示。我不得不重写getItemPosition(Object object),它告诉系统特定对象'没有改变/没有更多存在。
我在本地也有片段(引用)列表,我根据FragmentStateAdapter maintians的列表进行修改,这里是我的getItemPosition()代码:
@Override
public int getItemPosition(Object object) {
if (object instanceof myFragment) {
if (!mFragments.contains(object)) {
return POSITION_NONE;
} else {
return mFragments.indexOf(object);
}
}
return super.getItemPosition(object);
}
另外,我在添加/删除片段后只调用了notifyDataSetChanged()。我删除了所有那些startUpdate(),finishUpdate()。我不知道它们在哪里使用。但没有他们就行了。