Fragment是一个会被使用很多的技术,方便,容易做出比较友好的交互。这几天学习使用的一些心得分享一下。
首先是Fragment的函数调用过程,理解这个过程很重要,一些方法必须要在相应的过程执行之后才能被调用。
onAttach() : //调用该方法时Fragment会被连接到它的父Activity上。
onCreate() : //调用该方法来进行Fragment的初始创建。
onCreateView() : //一旦Fragment 已经被创建,要创建它自己的用户界面时调用该方法。
onActivityCreated() : //一旦父Activity和Fragment的UI已经被创建,则调用该方法。
onStart() : //在可见生命周期的开始时被调用。应用所有需要的UI变化,现在Fragment是可见的。
onResume() : //在活动生命周期的开始时被调用。回复所有暂停的Fragment需要的UI更新,线程或进程,但在非活动状态它是暂停的。
onPause() : //在活动生命周期结束时被调用。当Activity不是活动的前台Activity时,需要暂停UI的更新、挂起线程或者暂停那些不需要更新的CPU的集中处理。由于调用这个方法后,进程可能被终止,所以要保存所有的编辑和状态改变信息。
onStop() : //在可见生命周期结束时调用该方法。在Fragment不可见时,暂停其余的UI更新、挂起线程或者暂停不需要的处理。
onDestroyView() : //当Fragment的view被分离时,调用该方法。
onSaveInstanceState() ://在活动生命周期结束时,调用该方法保存UI的状态变化。
onDestroy() : //在整个生命周期结束时调用该方法。
onDetach() : //当Fragment从它的父Activity上分离时,调用该方法。
一些过程:
1.在使用onCreateView()给Fragment装载了自己的UI后,才能在onActivityCreated()中对调用的UI进行相应的操作,不然会出现java.lang.nullPointerException的空指针异常。例如:
在Fragment中装载自己的UI,然后在Fragment中对UI中的控件进行自定义:
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//首先装载此Fragment的UI
return inflater.inflate(R.layout.layout_growth_operator1, container,false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
//UI装载完成后对UI中的控件进行自定义
super.onActivityCreated(savedInstanceState);
initLayoutConfig();
}
//UI控件自定义。在onCreateView()创建完成前或者onCreateView()中进行UI控件的自定义,都会出现java.lang.nullPointerException空指针异常.
private void initLayoutConfig(){
TextView tv1 = (TextView) getActivity().findViewById(R.id.textView_layout_growth_operater1_1);
tv1.setText(R.string.grawth_operator_of_diary);
}
}