片段之间的通信应该只通过活动进行。 ((MyActivity)getActivity()).doFoo() - 将调用活动中的方法,然后更新其他片段
片段应该仅由活动控制。比如说,如果一个片段有直接的方式与另一个片段通信,那么就有可能出现一个片段被从其他片段分离而活动不知道的情况。
((MyActivity)getActivity()).doFoo()
时,您正在向下转型您的对象,并且如果包含的Activity不是MyActivity
的实例,则可能会遇到RuntimeException
。直接调用意味着Fragment与Activity紧密耦合。许多人认为这不是一件好事情。RuntimeException
的风险,因为它是强类型的。