亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號