在kotlin Kotlin 1.4.20-M2更新信息中Kotlin Android Extensions(之后简称KAE)被弃用(详情KT-42121),新版本的Android Studio将不再引用KAE插件,如何把项目中的KAE插件移除并且不使用一长串findviewById呢?ViewBinding就是首选的替代品(官方推荐)。
如何使用?
在build.gradle文件中引入ViewBinding。
android {
...
buildFeatures {
viewBinding true
}
...
}
以上就可以开始使用ViewBinding了。
在Activity中的使用
在onCreate()方法中进行如下修改:
lateinit var layout : ActivityMainBinding
override fun onCreate() {
layout = ActivityMainBinding.inflate(layoutInflater)
setContentView(layout.root)
}
没接触过DataBinding和ViewBinding的小伙伴就开始疑惑了ActivityMainBinding从哪里来的?是通过activity_main.xml文件自动生成的。
这样设置后又如何使用呢?看一下自动生成的源码
public final class ActivityMainBinding implements ViewBinding {
@NonNull
private final RelativeLayout rootView;
@NonNull
public final MaterialTextView text;
//...以下省略
}
可以看出会根据你的布局文件view设置的id进行驼峰命名,直接在代码中使用layout.text就好了。以上就是Activity的使用。
在Fragment中使用
跟Activity是一样的,在onCreateView重写方法中引入就好了。
lateinit var layout : FragmentMainBinding
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
layout = FragmentMainBinding.inflate(inflater,container,false)
return layout.root
}
Fragment还需要在onDestroyView()中对ViewBinding进行内存释放。以上就是ViewBinding替换KAE的全部内容了。