Fragment的生命周期无疑是代码经常出错的关键,所以,我们有必要弄懂Fragment的使用场景和对应的场景才会调用的方法。
下面是Fragment的生命周期流程图:
注:onAttach()在fragment第一次与Activity产生关联时调用,以后不再调用;
保存数据时依然和Activity一样,调用onSaveInstanceState()方法记录下需要传递和保存的数据,然后在onCreateView()方法中读取保存的数据,如下例:
public class Demo3Fragment extends Fragment {
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.d("demoinfo", "Fragment onSaveInstanceState() 方法执行!");
outState.putString("myinfo", "haha");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//创建 Fragment 中显示的 view, 其中 inflater 用来装载布局文件, container 表示 <fragment> 标签的父标签对应的 ViewGroup 对象,
// savedInstanceState 可以获取 Fragment 保存的状态
Log.d("demoinfo", "Fragment onCreateView() 方法执行!");
if(null != savedInstanceState){
Log.d("demoinfo", "保存了的数据: "+ savedInstanceState.getString("myinfo"));
}else {
Log.d("demoinfo", "没有保存的数据!");
}
View view = inflater.inflate(R.layout.fragment_demo3, container, false);
return view;
}
}