FragmentActivity(android.support.v4.app.Fragment.Activity)
,通过继承FragmentActivity类,调用getSupportFragmentManager()
获取FragmentManager。注意⚠️:在Honeycomb及后续的Android版本中,Activity的所有子类都知道如何管理fragment,我们可以直接使用标准库种的原生fragment类。如果大家觉得自己是为最新版本设备开发应用的话就没必要使用支持库,但代码需要有如下修改:
1.放弃使用FragmentActivity
类,转而使用标准库中的Activity
(android.app.Activity)-->activity默认支持API在11以上版本中的fragment;
2.放弃使用android.support.v4.app.Fragment
类,转而使用android.app.Fragment
类;
3.放弃使用getSupportFragmentManager()
方法获取FragmentManager,转而使用getFragmentManager()
方法。
public class CrimeActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crime);
FragmentManager manager = getSupportFragmentManager();
Fragment fragment = manager.findFragmentById(R.id.fragmentContainer);
if (fragment == null) {
fragment = new CrimeFragment();
manager.beginTransaction()
.add(R.id.fragmentContainer, fragment)
.commit();
}
}
唠叨了这么多,我们以一段代码为例子开始进入正题吧,activity的FragmentManager负责调用队列中fragment的生命周期方法。添加fragment供FragmentManager管理时,onAttach(Activity)、onCreate(Bundle)以及onCreateView(...)方法会被调用。托管activity的onCreate(...)方法执行后,onActivityCreated(...)方法也会被调用。因为我们正向CrimeActivity.onCreate(...)方法添加CrimeFragment,所以fragment被添加后,该方法会被调用。
在activity处于停止,暂停或运行状态下时,添加fragment会发生什么呢?此种情况下,FragmentManager立即驱使fragment快速跟上activity的步伐,直到与activity的最新状态保持同步。例如,向处于运行状态的activity中添加fragment时,以下fragment生命周期方法会被依次调用:onAttach(Activity)、onCreate(Bundle)、onCreateView(...)、onActivityCreated(Bundle)、onStart(),以及onResume()方法。
2025 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123