【发布时间】:2013-07-01 17:58:59
【问题描述】:
我有一个 Activity 和多个 Fragments。我想显示DialogFragment 或从Fragments 之一打开另一个Fragment。我知道Activity 应该是负责打开Fragments 的人,所以我尝试了几件事。
第一
我尝试使用getActivity() 并对其进行强制转换,以便我可以在Activity 中调用一个方法来显示Fragment 但这会在Fragment 中创建一个与Activity 的依赖关系,我想避免添加一个尽可能依赖。
第二次
接下来我尝试了一个监听器来通知Activity 它应该显示Fragment。所以我在Activity中创建了一个类来实现监听接口。但是我遇到了问题,因为我必须使用New MyActivity().new Listener();,当我尝试使用getSupportFragmentManager() 时它会抛出Exception,因为Activity 的这个实例没有被初始化。
THIRD
然后我尝试让Activity 直接实现监听器,因为这样我只创建了一个与监听器而不是活动的依赖关系。但是,现在我的 Activity 将实现 2 到 4 个不同的接口,这让我犹豫不决,因为它会严重降低凝聚力。
所以我尝试过的任何方式似乎都遇到了砖墙并创建了我不确定是否需要创建的依赖项。我搞砸了,必须选择其中一种吗?如果是这样,哪个选项最好?非常感谢任何帮助或建议。
【问题讨论】:
-
有很多方法可以做到这一点,我更喜欢尽可能解耦的东西,为此我喜欢事件总线。参见 otto,例如:square.github.io/otto。 (让您摆脱所有接口/侦听器的麻烦。传递数据,使用强类型,以清晰简洁的方式进行。)
-
看起来很有希望。我得去看看。感谢您的提示。
标签: android oop android-fragments listener