当前接受的答案(在“活动”中使用静态方法)既是奇数又是“错”。
静态方法的使用很奇怪,因为它不需要是静态的。
这是错误的,因为片段必须了解托管它的特定活动。这是“紧密耦合”,并且还使得该片段不可重复使用。
有两种常见的解决方案:
- 在该Activity中创建一个包含该片段可以调用的方法的接口。在Activity(使用片段的所有Activity)中实现该接口,然后在Fragment中,使用getActivity()获取Activity,并将其强制转换为接口。在这种模式下,通常还检查(使用’instanceof’)Activity是否实现了接口,如果没有实现,则抛出RuntimeException。
- 使用事件总线(例如Square的Otto,GreenRobot的EventBus)在Fragment和它的父Activity之间进行通信。我觉得这是最干净的解决方案,并且将Fragment从其Activity中完全提取出来。



