今天,南昌网络公司-百恒网络给大家介绍一下实现fragment生命周期的方法,供大家参考、学习,希望对大家有所帮助。
CrimeFragment类是与模型及视图对象交互的控制器,用于显示特定crime的明细信息,并在用户修改这些信息后立即进行更新。
在GeoQuiz应用中,activity通过其生命周期方法完成了大部分逻辑控制工作。而在CriminalIntent应用中,这些工作是由fragment的生命周期方法完成的。fragment的许多生命周期方法对应着我们熟知的Activity方法,如onCreate(Bundle)方法。
在CrimeFragment.java中,新增一个Crime实例成员变量,实现Fragment.onCreate(Bundle)方法,如下代码清单所示。
覆盖Fragment.onCreate(Bundle)方法(CrimeFragment.java)
public class CrimeFragment extends Fragment {
private Crime mCrime;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCrime = new Crime();
}
}
需注意以上实现代码中的以下几点:
首先,Fragment.onCreate(Bundle)是公共方法,而Activity.onCreate(Bundle)是保护方法。Fragment.onCreate(...)方法及其他Fragment生命周期方法必须是公共方法,因为托管fragment的activity要调用它们。
其次,类似于activity,fragment同样具有保存及获取状态的bundle。如同使用Activity.onSaveInstanceState(Bundle)方法那样,我们也可以根据需要覆盖Fragment.onSave-InstanceState(Bundle)方法。
另外, fragment的视图并没有在Fragment.onCreate(...)方法中生成。虽然我们在Fragment.onCreate(...)方法中配置了fragment实例,但创建和配置fragment视图是另一个fragment生命周期方法完成的:
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
该方法实例化fragment 视图的布局, 然后将实例化的View 返回给托管activity 。
LayoutInflater及ViewGroup是实例化布局的必要参数。Bundle用来存储恢复数据,可供该方法从保存状态下重建视图。
在CrimeFragment.java中,添加onCreateView(...)方法的实现代码,从fragment_crime.xml布局中实例化并返回视图,如下代码所示。
覆盖onCreateView(...)方法(CrimeFragment.java)
public class CrimeFragment extends Fragment {
private Crime mCrime;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCrime = new Crime();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_crime, container, false);
return v;
}
}
在onCreateView(...) 方法中, fragment 的视图是直接通过调用LayoutInflater.inflate(...)方法并传入布局的资源ID生成的。第二个参数是视图的父视图,我们通常需要父视图来正确配置组件。第三个参数告知布局生成器是否将生成的视图添加给父视图。这里,我们传入了false参数,因为我们将以activity代码的方式添加视图。
关于实现fragment生命周期的方法,百恒网络今天就讲到这里,了解更多关于南昌APP开发、网站建设、微信开发、电商购物网站开发、网络营销等方面的资讯,欢迎访问百恒网络网站,网址:http://www.nczwz.com/,或者来电咨询百恒网络,十多年资深建站经验,值得信赖!