在这份文档“与其他片段通信”中,谷歌告诉我们,Activity和Fragment之间通信的最佳实践是实现一个接口。然后Fragment可以调用该接口,在Activity中执行必要的行为。
但也有一种黑客方式来做到这一点。直接通过方法"getActivity()"获取Activity,然后我们可以使用它下面的“公共方法”。
这让我感到困惑。因为我真的想不出使用黑客方式存在任何重大缺点。
我脑海中第一种方法的优点是:
但也有一种黑客方式来做到这一点。直接通过方法"getActivity()"获取Activity,然后我们可以使用它下面的“公共方法”。
这让我感到困惑。因为我真的想不出使用黑客方式存在任何重大缺点。
我脑海中第一种方法的优点是:
- 我可以将“资源可访问性”限制在我的Activity下面。但由于Fragment能够调用“getActivity()”,所以它实际上可以访问其中的所有“公共”方法。因此,这并不能让我真正信服。
- 代码更易读和故事化。使用第一种方法,代码告诉我们,“该Activity只为Fragment打开了这些特定的可访问区域”。我们可以通过查看Activity中的代码直接知道“Fragment中的内容可能会干扰Activity”。否则,我们将需要打开Fragment下面的代码来查看它做了什么。