[問題] 當有多個Fragment在運作時如何傳遞資料

作者: lkkpeter   2017-10-30 09:17:10
我的程式只有一個MainActivity
然後利用framelayout替換需要的Fragment
所以我主要的變數都存在MainActivity
聽起來很好管理
但我實際在操作時是這樣的
1. 開啟FragmentA,將他需要的變數資料一併帶過去
2. FragmentA有RecycleView,需要將資料傳遞給其Adapter
3. RecycleView有按鈕
按下之後要將framelayout內的FragmentA換成FragmentB
這時候還需要用到MainActivity的FragmentManager
4. 然後FragmentB又需要很多的資料
請問在這種狀況下該如何傳遞資料 ?
我之前是將全部的變數設為static
然後哪個要用就直接MainActivity.var 或
MainActivity.fragmentManager
但這樣感覺不是很好...
目前卡在這個地方,主要是資料的傳遞
如果RecycleViewAdapter需要很多的資料,在設計上會顯得很複雜
這樣是正常的嗎,請各位先進開示一下...
作者: aids61517 (奇歐巴肯)   2017-10-30 09:36:00
用Broadcast如何
作者: lkkpeter   2017-10-30 10:02:00
廣播看起來可以解決fragmentManager的問題那變數資料的傳遞部分該怎麼辦呢,有辦法讓Adapter直接取MainActivity的資料嗎
作者: y3k (激流を制するは静水)   2017-10-30 10:08:00
方法很多Service也可以阿
作者: zop (ㄞ肝ㄞ肝~一元二十罐~)   2017-10-30 10:28:00
newInstance + model
作者: lnmlee   2017-10-30 10:48:00
Fragment 要看成是 View 盡量把 background task 跟 datamodel 放 controller (Activity)處理 然後透過 bundle 傳遞正規完的資料到 fragment 細節處置
作者: ssccg (23)   2017-10-30 11:07:00
我覺得Fragment不是View,Fragment根本就不一定會有View理論上是可重用在不同Activity中的controller當然實際上哪個對應哪個是看個人程式架構,不過原po的目前
作者: lnmlee   2017-10-30 11:12:00
這個說法要看個人而定 當初我給他定義成 controller 現在我覺得只是一個有自己Life cycle 的View 看使用它的人要怎麼看待它
作者: ssccg (23)   2017-10-30 11:15:00
的架構比較像fragment是controller
作者: aids61517 (奇歐巴肯)   2017-10-30 15:41:00
資料從Activity用Bundle傳給Fragment,按RecyclerView的按鈕用Broadcast通知MainActivity執行更換Fragment的動作,再把資料用Bundle傳遞給新的Fragment還是我搞錯你的需求嗎@@?
作者: lkkpeter   2017-10-30 17:35:00
我目前就是照樓上這樣子做,主要問題是資料很多種每次帶一大串到Fragment,然後又帶一大串到Adapter
作者: studentjason (studentjason)   2017-11-03 12:51:00
用 eventbus ?

Links booklink

Contact Us: admin [ a t ] ucptt.com