0
我一直試圖在使用界面檢查列表視圖上的「最喜歡」複選框時,在viewpager的第二個位置上更新列表視圖。它的工作如預期,但當我去第三片段,然後再次滑回,收藏夾不會更新,即使一切似乎應該像以前一樣工作,直到我旋轉或重新啓動應用程序才工作。在Viewpager中更新列表視圖直到切換到最後一個片段並返回
我已經檢查了fragmentmanager,它一直只包含三個片段,並且方法確實被調用(註冊就好像listview應該改變一樣,然後我刷到第三個tab並返回),所以我真的在這裏撓頭。
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();
}
}
還沒有嘗試過,但offscreenpagelimit肯定會修復它。該片段確實會被破壞,但是當這種情況發生時我會更新我的SparseArray,如果您能詳細說明您的第二個解決方案,那將會很棒,因爲我不完全理解您的意思 –
編輯:解決方案1沒有工作 –