Fragment的优点就是当Activity较为复杂时,将Activity的界面分为几个模块,每个模块就是一个Fragment。这样避免Activity的臃肿,也有助于减小耦合,提高内聚。使用一个新包存放Fragment。每个activity用1到3个fragment为宜。太多Fragment会充斥着Fragment事务处理,这个时候用定制视图继承View。 但是我们尽量使用Fragment,到后期添加会有很多麻烦处理。 当要使用Fragment时,一般使用Fragment填充FrameLayout。每个Fragment都有其布局容器。 Fragment多的时候,可以抽取一个公有的抽象BaseFragment类。抽象方法由不同的Fragment自己实现。这样提高代码复用率,也更加灵活。 常见的用法是Fragment里面保存一个Activity变量。 public abstract class BaseFragment extends Fragment { protected Activity mActivity; //在onAttach之后调用的方法。是第二个被调用的方法。 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mActivity = getActivity(); } //第三个被调用的方法,用来初始化Fragment布局 @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return initView(); } // 第四个被调用的方法,在Activity的onCreate方法调用后调用,用来初始化数据。 @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initData(); } //初始化布局函数由子类实现,且不由外界调用。 protected abstract View initView(); initView函数是创建具体的Fragment。 //初始化数据函数由子类实现 protected abstract void initData(); 利用FragmentManager动态添加Fragment Fragment事务处理Fragment添加删除替换 FragmentManager.BeginTransaction.add.comit 当需要给Fragmentc信息可以设置argument给一个Bundle给Fragment。 Fragment使用原则 Fragment保持独立性。他不需要知道托管的activity的方法。不调用activity的方法。反之activity知道Fragment的方法。 这说明一个模块知道他内部模块的信息不知道他所属模块的信息。其次内部模块应该提供修改自己信息的函数而不是直接由模块修改。 |
|
来自: Dragon_chen > 《Android控件》