Fragment
Fragment是可以嵌在Activity**中的UI界面,它可以作为活动的子界面,动态的更新,我们只需要维护活动中的内容即可
-
创建一个碎片:
需要创建碎片的布局,并且实例化碎片类,如下为例:
public class AnotherRigthFragment extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.another_right_layout,container,false); return view; } }一般需要重写onCreatView()方法,并通过inflate引入布局文件
-
引入碎片:
在活动的布局中新建碎片布局, 通过android:name属性来指定碎片的实例(class),就可以引入碎片了
-
动态切换碎片:
利用FragmentManger类和FragmentTransaction的对象可以在指定的容器中加载碎片, 通过逻辑设置加载不同的碎片,就实现了动态切换了,核心代码编写到一个方法中,如下:
// 把需要加载的碎片作为Fragment参数传入 private void replaceFragment(Fragment fragment){ FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // 启动事件 // 要传入的是碎片的实例,所以我们的碎片都用类封装好 fragmentTransaction.replace(R.id.right_layout,fragment); // 返回栈的状态一般用null描述, 这样在返回过程中回溯到上一个碎片 fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); }通过使用限定符,我们还可以让不同的分辨率的屏幕加载不同的布局; 我们在res文件夹下建立layout-xxx, xxx为限定符,如large, small等;
在此文件夹下建立和layout文件夹下的同名布局, 可以自由调整不同分辨率下采用的布局方式 -
Fragment生命周期:
Fragment的生命周期和活动的生命周期类似,并且紧密相连; 当碎片可见,并且关联的活动处于运行状态时,碎片也处于运行状态 ; 活动处于暂停状态和停止状态,碎片也处于同样的状态; 但碎片可以在活动处于运行状态的时候, 通过执行FragmentTransaction类下的remove replace方法移除活动,活动就处于销毁状态了.
和活动的生命周期相比,增加了一些方法, 下图来自 《第一行代码》 详细阐述了这些方法的应用


浙公网安备 33010602011771号