Activity如何向另一个Activity中的Fragment传送数据

前朝遗民 2020-07-28 09:03:18
没图说个JB, 先上图为敬:



说明: Activity1是主Activity, Activity2是由Activity1启动的。Activity2底部有TabLayout,分别点击TabLayout里的按钮,会分别装载对应的Fragment。如图所见,Fragment1就是点击了底部第一个按钮装载好的。顶部的小叉叉按钮属于Activity2的,点击后会关闭Activity2。

任务:
Fragment1里面有个按钮,点击后,使用Activity1里的对象线程A发送指令,然后得到下位机的参数。(Activity1中的矩形框不是按钮,只是一个流程示意图)。然后问题来了:我怎样才能通知Fragment1得到这些数据额并刷新UI(显示在参数列表框中)呢?

想了几个办法:
0、可以在Activity2中创建一个线程,然后捕捉Activity1里面的数据。觉得这办法最笨,而且还要创建一个线程,不想采用
1、用Intent, 但这个应该是在启动Activity2的时候传过去的,现在这个时候还能传过去吗?
2、用handler,但handler可以跨Activity吗,而且我这还是Activity里面的Fragment
3、用广播 LocalBroadcastManager,但这个已经被弃用
4、用SharedPreferences,就是键值对,适合String、int等简单类型,复杂类型比如类对象没办法传送
5、EventBus,这个似乎可行,没试过,也不知道能不能解决我这问题。

我是Android小白,很多东西还不是太了解,想请教各位大神,你们是怎么解决这个问题的呢?


...全文
3419 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ink_s 2020-07-29
  • 打赏
  • 举报
回复
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' 我的localbroadcastmanager 还可以用as版本3.6.1
旧人颜Q 2020-07-29
  • 打赏
  • 举报
回复
那就用EventBus 呗,自己建一个数据类把需要的数据传过去
初学者-Study 2020-07-29
  • 打赏
  • 举报
回复
EventBus这个是可行的,你可以了解一下,先添加依赖,然后在要接收的地方注册和解注册,发送事件的地方只要一一行代码就可以了。
zhao5668 2020-07-29
  • 打赏
  • 举报
回复
这个网页 下载东西 都要用积分吗
nocafe 2020-07-29
  • 打赏
  • 举报
回复
引用 3 楼 旧人颜Q 的回复:
那就用EventBus 呗,自己建一个数据类把需要的数据传过去
前朝遗民 2020-07-29
  • 打赏
  • 举报
回复
最终选择了EventBus,简单,容易实现,完美解决了我的问题,谢谢以上各位大神!
前朝遗民 2020-07-28
  • 打赏
  • 举报
回复
附加说明一下: 由于线程发指令给下位机,下位机再返回数据,这个过程所花的时间是不固定的,尽管是毫秒级。这样一来,Fragment1就不能在按下按钮发送指令后的第二行代码就想通过Activity的静态变量得到数据,实际上这个是得不到数据的。所以,必须等待Activity1通过一种什么方式来通知它。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧