Android(安卓)Fragments新功能
在刚刚过去Android Dev Summit 2019中,提到很多项目,如依旧大力推广的Kotlin,还有Jetpack Compose,CameraX,Room等新功能。其中也提到了android fragments,发布了androidx.fragment-1.2.0-rc01。
fragment一直是开发中非常常用的工具,在以前的版本中由于生命周期的问题一直被诟病,虽然现在已经经过很多优化,依旧会出现些许问题。但google也一直在持续的优化,自从androidx推出之后,fragment独立为一个library,就是androidx.fragment。
使用androidx.fragment首先需要迁移到androidx,可以参考官方文档(https://developer.android.com/jetpack/androidx/migrate?hl=zh-cn)进行迁移。在刚刚发布的androidx.fragments库中,有一些新的功能变化。
FragmentContainerView
在以前的版本中,经常使用FrameLayout来进行加载Fragment,而FragmentContainerView就是继承自FrameLayout,它可以可靠的处理Fragment,有更好的协调功能,可以更好的管理fragment加载时的动画效果。
使用方法和FrameLayout相同
当然也可以代替fragment标签,它有两个自定义属性,name和tag,name表示会创建一个fragment,而设置了tag表示可以用findFragmentByTag来查找你的fragment,使用方法如下
但是需要注意的是不要用它来替换其他布局,如LinearLayout。
FragmentFactory
通常创建fragment时都是无参构造方法,而FragmentFactory改变了这一点,可以在新建fragment时就传入参数,不用再手动添加了
getSupportFragmentManager() .beginTransaction() .replace(R.id.container, MyFragment.class, new Bundle());
其次,可以自定义Factory方法,当创建fragment时,可以根据需要创建自定义的Fragment
public class MyFactory extends FragmentFactory { @NonNull @Override public Fragment instantiate(@NonNull ClassLoader classLoader, @NonNull String className) { …… }}
androidx.fragment的新版本有这些可喜的变化,值得尝试。使用方式如下
implementation 'androidx.fragment:fragment:1.2.0-rc01'// 如果使用kotlinimplementation 'androidx.fragment:fragment-ktx:1.2.0-rc01'
更多相关文章
- 在AndroidStudio中使用GreenDAO
- [转]创建不可见的Activity
- Android开发入门——推箱子游戏开发实战(二)
- Android中如何给layout资源文件分类 在layout下创建子文件夹
- 【白话】App从启动到页面显示出来发生了什么
- Android(安卓)自定义 dialog
- android中的dialog
- Android(安卓)Studio如何发布APK
- android fw systemserver之MountService分析