从FragmentStatePagerAdapter删除页面会导致问题

时间:2015-07-09 23:29:13

标签: android view android-viewpager fragmentstatepageradapter

我们的应用程序有多个片段来显示特定于位置的数据。我们使用了FragmentStatePagerAdapter和ViewPager。用户应该能够添加新页面并删除。添加新页面工作正常,删除现有页面会显示问题。当我确认我有3页。我从左侧导航菜单按钮中删除了第二个。当我尝试滑动到第3页时,它显示第二页的删除页面视图。并且它没有显示第3页。

我有Overriden getItem(),我返回新页面。我在添加/删除新页面到Adapter时调整了ItemCount。我在添加/删除之前调用了startUpdate(),在完成所有操作之后,destroy()删除了某个位置的任何片段对象,finishUpdate()。最后是notifyDataSetChanged()。

看起来没什么可错过但有些东西。我仍然看到已删除片段的视图,旁边是空白页面或类似的东西,具体取决于我删除的位置页面。 我看到Removing fragments from FragmentStatePagerAdapter是类似的东西,但对我的情况无能为力。帮助我解决任何问题。

1 个答案:

答案 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()。我不知道它们在哪里使用。但没有他们就行了。