我使用Android数据绑定库来绑定具有<include>
layout.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="model"
type="com.example.MyViewModel" />
</data>
...
<include
layout="@layout/someOtherLayout"
android:id="@+id/includedLayout" />
...
</layout>
在为xml生成的Databinding类中,我看到了这个属性:
@Nullable
public final com.example.databinding.SomeOtherLayoutBinding includedLayout;
为什么注释为@Nullable
? <include>
在布局中,正如我所看到的,它显然是非空的。我错过了什么?
它强制我在访问包含布局的字段时在Kotlin代码中使用非空断言运算符!!
,并且我想知道它是否安全或者是否有某些东西我是不考虑这里
val binder = DataBindingUtil.bind(view)
val someView = binder.includedLayout!!.someView
答案 0 :(得分:1)
对于最新版本的数据绑定编译器(3.1.0)来解决包含布局的可空绑定的问题,您可以设置
android.databinding.enableV2=true
在项目内的 gradle.properties 文件中。
之后,您需要调用重建。之后,所有包含的布局绑定都将标有@NonNull
注释。
答案 1 :(得分:0)
根据有关视图绑定的文档,当您有多个布局用于配置更改时,如果视图仅在某些配置中存在,则绑定类将被标记为可为空。