在Viewpager中更新Listview一直有效,直到切换到最后一个片段并返回

时间:2014-05-07 22:15:21

标签: android android-fragments android-viewpager

我在使用界面检查列表视图中的“收藏”复选框时,一直在尝试更新viewview的第二个位置上的列表视图。它正如预期的那样工作,但是当我转到第3片段然后再次向后滑动时,收藏夹不会更新,即使它看起来像以前一样工作也不会工作,直到我旋转或重新启动应用程序。

我已经检查过fragmentmanager,它确实一直只包含三个片段,并且这些方法被调用(注册就好像listview应该像我刷到第三个选项卡之前那样改变),所以我我真的在这里摸不着头脑。

FragmentStatePageAdapter:

    SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>();
    /* Some irrelevant code */

   @Override
public Fragment getItem(int position) {
    switch (position){
        case 0:
            return FragmentList.newInstance();
        case 1:
            return FragmentFavourites.newInstance();
        case 2:
            return FragmentThree.newInstance();
        default:
            return FragmentList.newInstance();
    }
}
     @Override
public Object instantiateItem(ViewGroup container, int position) {
    Fragment fragment = (Fragment) super.instantiateItem(container, position);
    registeredFragments.put(position, fragment);
    return fragment;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    registeredFragments.remove(position);
    super.destroyItem(container, position, object);
}

public Fragment getRegisteredFragment(int position) {
    return registeredFragments.get(position);
}

@Override
public int getCount() {
    return 3;
}

活动(回调):

     @Override
public void favouritesChangedFromMainMenu() {
    FragmentFavourites favouritesList = (FragmentFavourites) mSectionsPagerAdapter.getRegisteredFragment(1);
    if(null != favouritesList) {
        favouritesList.favouritesChangedFromMainMenu();
    }
}

1 个答案:

答案 0 :(得分:0)

当您移动到第三个片段时,第一个片段可能已被杀死(通过调用onSaveInstanceState)。

解决方案1 ​​yourViewPager.setOffscreenPageLimit(2);

解决方案2 ,检查您的第一个片段是否已被杀死...并在您滑动并重新创建在onCreate中执行的正确链接时重新创建。