android - 数据绑定(bind) - safeUnbox 警告

标签 android data-binding android-gradle-plugin warnings android-databinding

在我将 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&lt;Integer, Boolean&gt;" />

    <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&lt;Integer, boolean&gt;" />

关于android - 数据绑定(bind) - safeUnbox 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42872201/

相关文章:

android - testAndroidTestCaseSetUpProperly 是做什么的

android - Opengl-使用着色器,有必要吗?

android - 清除所有 Activity 的 Glide 缓存?

javascript - 是否可以在AngularJS中动态分配 `ng-model`

java - Android 使用另一个包中的 BR

android - 如何在 Android 中同时刷新两个 ListView ?

wpf - 在 ConverterParameter 中使用字典中的字符串

java - 可扩展 ListView 中的 Android 数据绑定(bind)

java - 像retro-lambda这样的Gradle任务可以混淆静态字符串

android - Android Studio:无法正常工作,得到不同的不同错误