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相同

<androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


当然也可以代替fragment标签,它有两个自定义属性,name和tag,name表示会创建一个fragment,而设置了tag表示可以用findFragmentByTag来查找你的fragment,使用方法如下

<androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:name="com.example.MyFragment"
        android:tag="my_tag" />


但是需要注意的是不要用它来替换其他布局,如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'
// 如果使用kotlin
implementation 'androidx.fragment:fragment-ktx:1.2.0-rc01'


 
————————————————
版权声明:本文为CSDN博主「jklwan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jklwan/article/details/102810238

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值