为了账号安全,请及时绑定邮箱和手机立即绑定

Android BindingConversion 在 kotlin 中不起作用?

Android BindingConversion 在 kotlin 中不起作用?

胡子哥哥 2023-05-10 15:13:22
我尝试BindingConversion在 Kotlin 中实现 a 但我没有让它工作。在 Java 类中尝试了相同的方法BindingConversion,它似乎有效。也许我只是误解了它的工作方式,因为我对 Kotlin 还很陌生。我基本上去掉了对我的问题不重要的所有内容。.xml 文件中的部分。 <TextView                android:id="@+id/the_item"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_marginStart="8dp"                android:layout_marginEnd="8dp"android:text="@{ch.labrat.anima.utilities.Conv.valueFromPosition(item.gender)}"/>科特林版本。object Conv {    fun valueFromPosition(position:Int):String {        return "Test"    }}Java 版本。public class Conv {    @BindingConversion    public static String valueFromPosition(Integer position){        return "Test";    }}在尝试添加@BindingConversion到 Kotlin 版本中的方法时,出现未使用静态方法的错误。出色地。我只是不明白。也许有人可以启发我?
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

基本上,当您在 Kotlin 中创建对象声明并在该对象中放置一些字段/方法时,它的行为类似于 static (在 Kotlin 中访问时)代码,但它不是 static

这意味着您可以使用该对象声明名称直接访问它(伴随对象也是如此)。

因此,在执行数据绑定时,生成的类是 Java 格式,现在它试图从 xml 访问您的对象声明,但它不能,因为它没有静态限定符。

因此,注释使用标记方法/字段被JVM@JvmStatic编译为静态。因此,现在 Java 代码在从 Kotlin 代码访问它时将其解释为静态的。

查看完整回答
反对 回复 2023-05-10
  • 1 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信