Android

什么是Fragment

为什么需要Fragment? 在官方文档的翻译中,Fragment译为片段。那么它是谁的片段?当然是Activity的,其目的在于解决如下几个问题: 将臃肿的Activity类分解为小的Fragment 修复老版本中LocalActivityManager所带来的问题 封装导航状态,如Activity本地回退栈和可管理的对话框(DialogFragment) 分离主从式UI(Master/Detail) Fragment的功能 生命周期 回退栈管理 配置改变时保留实例 FragmentManager的状态管理 管理一个视图 在xml布局中使用<fragment> 如何高效使用Fragment 尽管在布局中可以使用<fragment>标签,但并不能将其等效为View。从它所位于的抽象层级上而言其等效于Activity,是位于View之上的,其中Android包之间的抽象层级如下所示: 高层级 | android.app | android.widget 低层级 | android.view v android.content 尽管AOSP中的代码可能并非严格遵循这一规则,但大体上如此。Fragment依赖于View的界面绘制与事件响应,但View对Fragment一无所知,Fragment拥有View之外的关于生命周期的知识,可以协调View之间的协作。 Fragment状态 实际上并不用去记忆Fragment复杂的生命周期,它的状态实际上由若干整形值进行标识,并且其状态转换基本上是一个线性的顺序: static final int INITIALIZING = 0; // Not yet created. static final int CREATED = 1; // Created. static final int ACTIVITY_CREATED = 2; // The activity has finished its creation. static final int STOPPED = 3; // Fully created, not started. static final int STARTED = 4; // Created and started, not resumed....

3 min · 446 words · LEOY