Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions
Posted fxalll
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions相关的知识,希望对你有一定的参考价值。
Databinding是我在java时期最喜欢用的一种获得xml控件id的工具,但是他只比findViewbyId简单一些,每一次新建一个fragment我都需要针对性地配置一遍Databinding。
我们先来看一看Databinding的用法:
首先在build.gradle中的defaultConfig加入
dataBinding.enabled = true
刷新后在Fragment的onCreateView用法模版(配置)如下
FragmentFinishpayBinding binding;
binding = DataBindingUtil.inflate(inflater,R.layout.fragment_finishpay,container,false);
return binding.getRoot();
===
随后我转入kotlin开发,这时候了解了一个极其方便的工具,kotlin-android-extensions。他甚至什么都可以不用写,直接写id就可以调用。
然而现在谷歌技术迭代实在太快,kotlin-android-extensions这一技术居然已经被谷歌列为过时技术。如果还想要用,那么需要在build.gradle中的plugins加入
id ‘kotlin-android-extensions’
即可直接使用,无需任何配置。
然而还是被废弃,原因如下:
===
谷歌作为kotlin-android-extensions替换,推荐的技术为Viewbinding。
我们需要在build.gradle中的android加入
buildFeatures {
viewBinding true
}
刷新后在Activity用法模版(配置)如下
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
接着可以使用形如:
binding.textView.text = “Hello”
在Fragment用法模版(配置)如下
class MainFragment : Fragment() {
private var _binding: FragmentMainBinding? = null
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
_binding = FragmentMainBinding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
如果有些布局文件你不希望为它生成对应的Binding类,可以在该布局文件的根元素位置加入如下声明:
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
...
tools:viewBindingIgnore="true">
...
</LinearLayout>
其他的情况可以自己针对性查找。
以上是关于Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions的主要内容,如果未能解决你的问题,请参考以下文章
Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions
Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions