kotlin-android-extensions过时了,迁移到ViewBinding

前言

回顾历史,kotlin-android-extensions插件让我们省去了很多findViewById的代码,直接使用控件id操作控件。不过在Android Studio 4.1及以上IDE新建项目的时候,默认不会引入他了,如果还在使用,会给一个警告:kotlin-android-extensions插件已被废弃,现在推荐使用ViewBinding来进行替代。

更新gradle文件

build.gradle

plugins {
  	 //...
//    id 'kotlin-android-extensions'  //删除这行
 	id 'kotlin-parcelize' //添加这行
}

android {
    ...
    buildFeatures {
        dataBinding = true
        viewBinding = true //添加这行
    }
}
更新Activity和Fragment等页面代码
  1. 删掉kotlinx.android.synthetic相关导入
    关键字:kotlinx.android.synthetic
    在这里插入图片描述
  2. 为要使用的活动或片段扩充生成的绑定类的实例
    这部分,相信有的小伙伴使用DataBindingUtil和泛型做过基类的封装比如这种“BaseActivity<VM : BaseViewModel, DB : ViewDataBinding”,做过的直接跳第三条。
//activity示例
private lateinit var binding: ResultProfileBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    //布局为 result_profile.xml
    binding = ResultProfileBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
}
//fragment示例
private var _binding: ResultProfileBinding? = null
private val binding get() = _binding!!

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    _binding = ResultProfileBinding.inflate(inflater, container, false)
    val view = binding.root
    return view
}

override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}
  1. 更改所有视图引用以使用绑定类实例,而不是直接使用控件id

示例

//tv.text = "卢本伟" //删掉这行
binding.tv.text = "卢本伟"

后话

developer#doc:从 Kotlin 合成迁移到 Jetpack 视图绑定

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值