《Android编程权威指南》第7章读书笔记

Fragment

FragmentActivityActivity的子类,具有新版本Activity类管理fragment的能力,即便是在较早版本的Android设备上也可对fragment进行管理。

为托管UI fragmentActivity必须做到

1.在布局中为fragment的视图安排位置;

2.管理fragment实例的生命周期。

Fragment生命周期

缺图,后面补上。

注:Activity生命周期方法由OS调用,fragment生命周期由托管的Activity调用。

Activity托管UI fragment的两种方式:

1.添加fragmentActivity布局XML文件中;

2.在Activity代码添加fragment。

第一种方式简单却不够灵活。添加fragment到Activity布局中,就等于将fragment及其视图绑定到Activity的视图,布局的复杂程度会增加,而且在Activity的生命周期中,无法切换fragment视图。

第二种方式比较复杂但却是唯一一种可以在运行时控制fragment的方式。(为了UI的灵活性,通常使用这种做法)采用第二种方式也需要在Activity布局中使用FrameLayoutfragment安排位置,FrameLayout是一个通用性视图,可以托管多个fragment

注意:

1.Fragment.onCreate()public,而Activity.onCreate()protected。因为需要被托管的fragment的任何Activity调用,因此Fragment的生命周期方法都被设计为public

2.类似于ActivityFragment也有onSaveInstanceState()来保存和获取状态的bundle

3.在Fragment.onCreate()中虽然配置了fragment实例但是没有生成视图;创建和配置视图是在onCreateView()里面实现的,将生成的View返回给托管的Activity

添加UI fragmentFragmentManagerFragmentManager具体管理:

1.fragment队列(调用队列中fragment的生命周期方法);

2.fragment事物的回退栈。

注意:因为使用了support库和FragmentActivity(为了兼容之前不支持Fragment的系统版本),FragmentManager的创建通过调用getSupportFragmentManager();不考虑兼容的话,直接继承Activity,调用getFragmentManager()即可。

Fragment事务

Fragment事务被用来添加、移除、附加、分离或替换Fragment队列中的fragment

FragmentTransaction实例由FragmentManager.beginTransacion()创建并返回。

1.创建事务实例;

2.调用添加、移除、附加、分离或替换的方法;

3.commit()提交事务。

你可能感兴趣的:(《Android编程权威指南》第7章读书笔记)