ViewPager嵌套Fragment切換Fragment時不更新頁面

問題:

View Pager嵌套Fragment ,通過外部按鈕點擊切換不同的Fragment讓View Pager顯示不同界面。

原因:

在使用ViewPager+FragmentPagerAdapter時候,更新Fragment裏數據是不起作用,FragmentPagerAdapter添加或減少Fragment時,前面的Fragment內容更新不起作用等等問題,有的做法是暴力刪除fragment列表,如

也有做法是重寫FragmentPagerAdapter的instantiateItem(ViewGroup container, int position)方法等等,有效雖有效,但比較粗爆。

       FragmentPagerAdapter.getItem(int position)在更新時候不一定會被調用,所以Fragment更新是無效,來看看FragmentPagerAdapter的父類PagerAdapter中的代碼instantiateItem

解決辦法:

FragmentPagerAdapter裏在根據getItemId(int position)來判斷當前position裏Fragment是否存在,如果存在,則不會創建亦不會更新,那麼要讓FragmentPagerAdapter的更新生效,那在getItemId(int)里根據數據返回一個唯一的數據ID,當FragmentPagerAdapter更新時,數據ID改變了,那麼Fragment就會調用getItem(int)去獲取新Fragment,達到更新效果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章