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的方法。
这说明一个模块知道他内部模块的信息不知道他所属模块的信息。其次内部模块应该提供修改自己信息的函数而不是直接由模块修改。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。