Kotlin 使用Fragment

原文地址:http://jbblog.top/MyBlog/html/blogpagecontent.html?id=54

 

用kotlin使用fragment比java方便。


回顾一下再Java中实现fragment的添加http://jbblog.top/blogpagecontent.html?id=3

**第一步:**
这就是FragmentManager的扩展函数,接收一个Lambda表达式接收器作为参数,FragmentTransaction作为接收器

inline fun FragmentManager.inTransaction(func: FragmentTransaction.() -> Unit) {
    val fragmentTransaction = beginTransaction()
    fragmentTransaction.func()
    fragmentTransaction.commit()
}

**我们可以完善一下inTransaction,让lambda表达式返回FragmentTransaction**

inline fun FragmentManager.inTransaction(func: FragmentTransaction.() -> FragmentTransaction) {
    beginTransaction().func().commit()
}


**接下来,我们看一下使用AppCompatActivity的扩展函数比ActivityUtil工具类好在哪里我们可以实现AppCompatActivity的扩展函数addFragment和replaceFragment:**

fun AppCompatActivity.addFragment(fragment: Fragment, frameId: Int){
    supportFragmentManager.inTransaction { add(frameId, fragment) }
}


fun AppCompatActivity.replaceFragment(fragment: Fragment, frameId: Int) {
    supportFragmentManager.inTransaction{replace(frameId, fragment)}
}

由于这是对AppCompatActivity本身的扩展函数,我们可以在函数内部直接访问supportFragmentManager.

使用上面的扩展函数,我们在Activity中添加或者替换Fragment可以一行代码实现,不需要任何修饰符:

addFragment(fragment, R.id.fragment_container)

replaceFragment(fragment, R.id.fragment_container)

 

Fragment 推荐使用v4包里面的。

创建Fragment继承即可:

 class HomeFrg : Fragment()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值