[问题] 当有多个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