fragment之间及Fragment与Activity互调在实际应用中极为常见,比如官方API介绍Fragment给出的平板新闻客户端例子,UI左边是标题Fragment,UI右边是内容Fragment,点击不同的标题,显示不同的新闻内容,这是一个简单的Fragment间互调。根据Fragment互调是否解耦,是否贯彻面向对象编程思想,可以分为野路子做法及正规军做法,当然二者都能实现目的。本文通过具体的实现及改进过程,逐步降低Fragment互调的耦合度。
一、野路子用法
1、Fragment/Activity---调用--->Fragment
每个Fragment都有一个唯一的TAG或者ID,可以通过getFragmentManager.findFragmentByTag(),或者findFragmentById()获得任何Fragment实例,然后进行操作。
2、Fragment--调用-->Activity
通过getActivity得到当前绑定的Activity的实例,然后进行操作。
上面两种编程思想一目了然,在编程中也极为常见,具体到新闻客户端例子,就是在TitleFragment中通过代码直接调用ContentFragment,这样做TitleFragment就与ContentFragment高度耦合,TitleFragment代码被写死,直接破坏Fragment的重用思想。
下面是应用传统野路子实现过程:
ContentFragment.java
public class ContentFragment extends Fragment {
String[] news = new String[]{
"日企员工如何跟老板请假9.3日",