Replace Fragment in ViewPager (ViewPager里替換Fragment)


其實方法很簡單,只是一開始想復雜了,然后去StackOverflow上看到的各種答案就更迷糊了.

主要思維偏了就完了.

ViewPager里放的不管是Fragment還是Layout,這都是個Adapter容器.因此你要更改里面的東西,最正確的方法就是去修改Adapter里的數據.

替換步驟需要:

1.  刪除FragmentManager現有的當前頁面的Fragment.

我用的是mFm.beginTransaction().remove(mFm.findFragmentByTag("android:switcher:" + R.id.view_pager + ":" + position)).commit();因為看源碼你會發現添加的時候是用這個Tag去添加的.或許如果保存了個FragmentList也可以直接獲取.

2.  修改Adapter里的數據.

然后notifyDataSetChanged();

這里需要說一點,有些時候調用了notify也不會刷新,好像是緩存的原因.需要覆寫方法

@Override
public int getItemPosition(Object object) {
return POSITION_NONE;//返回這個表示該對象已改變,需要刷新
return POSITION_UNCHANGED;//反之不刷新
}

 

然后替換了當然還需要做到按返回鍵返回上一個Fragment.

我的方法

1.  Adapter里兩個List,里面都保存Fragment的類名.替換的時候把一個List里的數據修改

2.  在Activity的onBackPress()方法里調用Adapter自定義的backPress()方法,在該方法里去判斷兩個List的該position是否相同,不同則再操作一遍替換操作.相同則Activity退出.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM