我在使用界面检查列表视图中的“收藏”复选框时,一直在尝试更新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();
}
}
答案 0 :(得分:0)
当您移动到第三个片段时,第一个片段可能已被杀死(通过调用onSaveInstanceState
)。
解决方案1 ,yourViewPager.setOffscreenPageLimit(2);
解决方案2 ,检查您的第一个片段是否已被杀死...并在您滑动并重新创建在onCreate
中执行的正确链接时重新创建。