Android-通过数据绑定将对象传递给视图标记

Android-通过数据绑定将对象传递给视图标记,android,kotlin,Android,Kotlin,我试图用它们的标记控制视图的某些状态 我有一个密封类,其中包含与我的视图相关的对象 sealed class AuthFieldState: BaseFieldState(){ object IdentifierFieldState: AuthFieldState() object NameFieldState: AuthFieldState() } 我把这个传给大家看,就像这样: android:tag="@{AuthFieldState.IdentifierFieldSt

我试图用它们的标记控制视图的某些状态

我有一个
密封类
,其中包含与我的视图相关的对象

sealed class AuthFieldState: BaseFieldState(){
  object IdentifierFieldState: AuthFieldState()
  object NameFieldState: AuthFieldState()
}
我把这个传给大家看,就像这样:

android:tag="@{AuthFieldState.IdentifierFieldState}"
sealed class AuthFieldState {
    object IdentifierFieldState: AuthFieldState() {
        override fun toString() = this.javaClass.simpleName
    }
    object NameFieldState: AuthFieldState()
}
<data>
    <import type="com.yourpackage.AuthFieldState" />
</data>

...

android:tag="@{AuthFieldState.IdentifierFieldState.INSTANCE.toString()}"
但它向我显示了一个构建错误:

找不到访问者AuthFieldState.IdentifierFieldState


你们知道我怎么处理这个吗?

标记不能是对象的实例,它必须是字符串

    <!-- Supply a tag for this view containing a String, to be retrieved
         later with {@link android.view.View#getTag View.getTag()} or
         searched for with {@link android.view.View#findViewWithTag
         View.findViewWithTag()}.  It is generally preferable to use
         IDs (through the android:id attribute) instead of tags because
         they are faster and allow for compile-time type checking. -->
    <attr name="tag" format="string" />
然后在xml导入类型中按如下方式使用:

android:tag="@{AuthFieldState.IdentifierFieldState}"
sealed class AuthFieldState {
    object IdentifierFieldState: AuthFieldState() {
        override fun toString() = this.javaClass.simpleName
    }
    object NameFieldState: AuthFieldState()
}
<data>
    <import type="com.yourpackage.AuthFieldState" />
</data>

...

android:tag="@{AuthFieldState.IdentifierFieldState.INSTANCE.toString()}"

...
android:tag=“@{AuthFieldState.IdentifierFieldState.INSTANCE.toString()}”

标记不能是对象的实例,它必须是字符串

    <!-- Supply a tag for this view containing a String, to be retrieved
         later with {@link android.view.View#getTag View.getTag()} or
         searched for with {@link android.view.View#findViewWithTag
         View.findViewWithTag()}.  It is generally preferable to use
         IDs (through the android:id attribute) instead of tags because
         they are faster and allow for compile-time type checking. -->
    <attr name="tag" format="string" />
然后在xml导入类型中按如下方式使用:

android:tag="@{AuthFieldState.IdentifierFieldState}"
sealed class AuthFieldState {
    object IdentifierFieldState: AuthFieldState() {
        override fun toString() = this.javaClass.simpleName
    }
    object NameFieldState: AuthFieldState()
}
<data>
    <import type="com.yourpackage.AuthFieldState" />
</data>

...

android:tag="@{AuthFieldState.IdentifierFieldState.INSTANCE.toString()}"

...
android:tag=“@{AuthFieldState.IdentifierFieldState.INSTANCE.toString()}”

我仍然被困在同一个错误中。我试图将一些通用的东西传递给视图,其中我拥有的
MutableLiveData
可以管理屏幕的状态。每个字段都需要一个不同的状态,但我仍然陷入了相同的错误中。我试图将一些通用的东西传递给视图,其中我拥有的
MutableLiveData
可以管理屏幕的状态。每个字段都需要一个不同的状态