【发布时间】:2015-05-11 01:38:36
【问题描述】:
在此文档"Communicating with Other Fragments" 中,Google 告诉我们,交流 Activity 和 Fragment 的最佳做法是实现接口。然后这个接口可以被 Fragment 调用并在 Activity 中执行必要的行为。
但也有一种破解方法可以做到这一点。直接通过"getActivity()"方法获取Activity,然后我们就可以使用它下面的所有"public method"了。
这让我很困惑。因为我真的想不出使用 hack 方式来做这件事有什么严重的缺点。
我想到第一种方法的好处是:
- 我可以将“资源可访问性”限制在我的 Activity 下。但是由于 Fragment 能够调用“getActivity()”,那么它实际上可以访问其中的所有“公共”方法。所以这并不能真正说服我。
- 代码更具可读性和故事性。对于第一种方法,代码告诉我们“这个Activity只为Fragment打开这些特定的可访问区域”。我们可以直接通过查看Activity中的代码知道“Fragment里面有什么可能会干扰Activity”。否则,我们需要打开 Fragment 下的代码,看看它做了什么。
好吧,我把这些总结出来之后,我自己有点信服了。但坦率地说,我真的想要一些其他的固体,并且必须有这样做的理由。任何想法或文档将不胜感激!
【问题讨论】:
-
@QuentinTsai:你看到我的回答了吗?
-
@ZygoteInit 是的!对不起,我的回复晚了,我之前生病了。我已经浏览了您所有的答案,它们都非常有帮助。但是很抱歉,我可能会给 Reinier 一个正确的答案,因为对我来说,它真的让我想起了一些我以前没有注意到的事情。谢谢大家!!
标签: java android android-activity android-fragments interface