我学过的android-1 fragment
好久没有更新了,最近在写android 额。。。。。接口和springmvc 重新写一个项目。 机械键盘打字真实爽!!!! ok 复习一下fragment 面试的时候总是看,看了N遍了也没有什么心得体会研究一下吧:
什么是fragment?
- 这是我遇到的最愚蠢问题!!!什么就像什么事java,什么事c,什么事计算机语言一样。非要用中文告诉你什么事fragment 的话,那么我就告诉你,fragment的中文名称是碎片。一个允许将Activity拆分成多个完全独立封装的可重用的组件,每个组件都有它的生命周期和UI布局。反正这句话最后还是会忘记的。但是学会使用就好了。
- 非要说fragment的特性,那么每个fragment都是独立的模块,并与它绑定的Activity有着密切的关系。多个Activtiy可公用一个Activity,可以在Activtiy里,随意的操作。
- 一般使用常见的ViewPager + fragment,就可以在Activity里边进行滑动操作。
创建fragment
- 多数形况下fragment需要分配一个UI布局文件。如果Fragment需要UI,可以重写onCreateView方法,来填充需要View层次。
public class BlankFragment extends Fragment {
public BlankFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//填充布局
return inflater.inflate(R.layout.fragment_blank, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
}
fragment生命周期
public class BlankFragment extends Fragment {
@Override
public void onAttach(Context context) {
super.onAttach(context);
//获取对父类Activity的引用
}
public BlankFragment() {
// Required empty public constructor
//一个空的构造
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化Fragment
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// 填充布局
return inflater.inflate(R.layout.fragment_blank, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//这里fragment的View被上边填充后,就可以控制里边的控件。
}
@Override
public void onStart() {
super.onStart();
//应用所有需要UI变化,现在Fragment可见的。
}
//在活动的生命周期中被调用和Activty一样。
@Override
public void onResume() {
super.onResume();
//恢复所有暂停的Fragment。
}
//在活动生命周期结束的时候调用
@Override
public void onPause() {
super.onPause();
//当Activity不是活动的前台时候,需要暂停更新。
}
//在生命周期结束时候,嗲用该方法保存UI状态变化
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
//在可见生命周期结束时候调用
@Override
public void onStop() {
super.onStop();
}
//当Fragment的View被分离时,调用该方法。
@Override
public void onDestroy() {
super.onDestroy();
//清除资源相关的View
}
//在整个生命周期结束时调用该方法
@Override
public void onDestroyView() {
super.onDestroyView();
//清除所有资源,包括结束线程和关闭相关的数据库
}
//Fragment从他的父Activity上剥离时候,该方法
@Override
public void onDetach() {
super.onDetach();
}
}
Fragment特有的生命周期事件
- 这 Fragment 完整的生命周期开始与绑定到它的父Activilty,结束于父Activity分离。
onAttach 和 onDetach onAttach 在Fragment的UI之前被创建前,以及Fragment自身或他们的父Activity完成他们的出事话之前会被触发。重唱OnAttach事件用来获取Fragment的父Activtiy的引用,用进一步出事化工作做准备。
创建和销毁Fragment
- Fragment的UI是在一套处理程序中初始化和销毁:分别是onCreateView和onDestroyView,使用onCreateView方法来初始化Fragment:填充UI、获取它所包含的View的引用,然后创建所需的线程。