我嘗試BindingConversion在 Kotlin 中實現(xiàn) a 但我沒有讓它工作。在 Java 類中嘗試了相同的方法BindingConversion,它似乎有效。也許我只是誤解了它的工作方式,因為我對 Kotlin 還很陌生。我基本上去掉了對我的問題不重要的所有內(nèi)容。.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 版本中的方法時,出現(xiàn)未使用靜態(tài)方法的錯誤。出色地。我只是不明白。也許有人可以啟發(fā)我?
1 回答

幕布斯7119047
TA貢獻1794條經(jīng)驗 獲得超8個贊
基本上,當您在 Kotlin 中創(chuàng)建對象聲明并在該對象中放置一些字段/方法時,它的行為類似于 static?(在 Kotlin 中訪問時)代碼,但它不是 static。
這意味著您可以使用該對象聲明名稱直接訪問它(伴隨對象也是如此)。
因此,在執(zhí)行數(shù)據(jù)綁定時,生成的類是 Java 格式,現(xiàn)在它試圖從 xml 訪問您的對象聲明,但它不能,因為它沒有靜態(tài)限定符。
因此,注釋使用標記方法/字段被JVM@JvmStatic
編譯為靜態(tài)。因此,現(xiàn)在 Java 代碼在從 Kotlin 代碼訪問它時將其解釋為靜態(tài)的。
添加回答
舉報
0/150
提交
取消