在我将 AS gradle 版本升级到 2.3.0 后, 数据绑定(bind)遇到警告:
Warning:selectMap[index] is a boxed field but needs to be un-boxed to execute selectMap[index] ? @android:color/white : @android:color/transparent. This may cause NPE so Data Binding will safely unbox it. You can change the expression and explicitly wrap selectMap[index] with safeUnbox() to prevent the warning
selectMap 是一个 ObservableMap,然后我搜索了这个警告,但只得到了一些讨论并没有修复它
Android Studio 2.3.0-alpha1: Databinding + int unboxing causes compile errors
Databinding - data object is null on API 15-18
我按照链接中的方式,将 selectMap[index]
修改为 safeUnbox(selectMap[index])
但出现语法错误。
那么有人知道如何解决这个警告吗?
编辑: 这是xml文件代码
<?xml version="1.0" encoding="utf-8"?>
<data class="SupportCountryViewHolderBinding">
<variable
name="viewModel"
type="com.goodarc.care_about.activity.account.support_country.SupportCountryHolderViewModel" />
<variable
name="dataSource"
type="com.goodarc.care_about.module.assets_file.SupportCountry" />
<variable
name="selectMap"
type="android.databinding.ObservableMap<Integer, Boolean>" />
<variable
name="index"
type="int" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@{selectMap[index] ? @android:color/white : @android:color/transparent}"
android:onClick="@{(v) -> viewModel.onItemSelectListener(selectMap, index)}"
android:orientation="vertical"
android:padding="20dp">
<TextView
style="@style/TitleLabel2"
android:layout_gravity="center_vertical|start"
android:text="@{dataSource.display}"
android:textColor="@{selectMap[index] ? @android:color/black : @android:color/white}"
tools:text="Taiwan (+886)" />
</LinearLayout>
构建成功,但出现警告(我过去了)。
最佳答案
我有同样的警告,在我的例子中,将变量声明从 Boolean 类型更改为 boolean 类型解决了问题:
发件人:
<variable
name="readOnly"
type="Boolean" />
收件人:
<variable
name="readOnly"
type="boolean" />
所以,也许你可以试试:
<variable
name="selectMap"
type="android.databinding.ObservableMap<Integer, boolean>" />
关于android - 数据绑定(bind) - safeUnbox 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42872201/