2014-05-07 11 views
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(); 
    } 
} 

回答

0

當你移動到第三個片段,第一個可能是(與以onSaveInstanceState通話)殺害。

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

解決方案2,請檢查您的第一個片段被殺害......並重新創建,當你刷卡並重新創建您在onCreate做正確的鏈接。

+0

還沒有嘗試過,但offscreenpagelimit肯定會修復它。該片段確實會被破壞,但是當這種情況發生時我會更新我的SparseArray,如果您能詳細說明您的第二個解決方案,那將會很棒,因爲我不完全理解您的意思 –

+0

編輯:解決方案1沒有工作 –

相關問題