一尘不染

将数据从Fragment发送到MainActivity

java

我有一个TextView在我MainActivityButton它是一个Fragment连接到MainActivity。当我单击时,Button我想说“
单击TextView按钮”。

这可能吗?

我知道两个Fragments连接到同一对象的对象Activity可以轻松地相互通信并相互发送数据。但是对象可以Fragment将数据发送到对象中吗Activity

编写TextView自己的程序并将其Fragment附加到程序上是更好的编程Activity吗?然后,我可以简单地让两个片段相互发送数据。

抱歉,如果这不是StackOverflow的正确类型。我是新手Fragments,因此无法在此问题上找到清晰的解释。

提前致谢!


阅读 272

收藏
2020-12-03

共1个答案

一尘不染

当前接受的答案(在“活动”中使用静态方法)既是奇数又是“错”。

静态方法的使用很奇怪,因为它不需要是静态的。

这是错误的,因为片段必须了解托管它的特定活动。这是“紧密耦合”,并且还使得该片段不可重复使用。

有两种常见的解决方案:

  1. 在该Activity中创建一个包含该片段可以调用的方法的接口。在Activity(使用片段的所有Activity)中实现该接口,然后在Fragment中,使用getActivity()获取Activity,并将其强制转换为接口。在这种模式下,通常还检查(使用’instanceof’)Activity是否实现了接口,如果没有实现,则抛出RuntimeException。
  2. 使用事件总线(例如Square的Otto,GreenRobot的EventBus)在Fragment和它的父Activity之间进行通信。我觉得这是最干净的解决方案,并且将Fragment从其Activity中完全提取出来。
2020-12-03