問題タブ [kapt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - Android Databinding と Kotlin を使用してカスタム BindingAdapter でラムダを使用する
Kotlin を使用して、Android Databinding のラムダ ハンドラーを使用してカスタム バインディングを作成しようとしています。ViewModel ハンドラーが明示的に Void を返している限り、うまく機能しています。しかし、代わりに Kotlin Unit が返された場合は、error: cannot generate view binders java.lang.StackOverflowError
.
他のすべてのカスタム バインディングが機能するため、すべてが正しく接続されているようです (onClickVoid を呼び出している限り、convertBooleanToViewVisibility、toTestString、さらには customOnClick [以下の例を参照])。
問題は、Void を返す代わりに app:customOnClick で Unit を返すラムダを呼び出そうとしているときです。mainViewModel.onClick()
以下の例では、 の代わりに呼び出すことですmainViewModel.onClickVoid()
。Unit
android:onClick がバージョンを呼び出すことができるため、それを機能させる方法が必要です。しかし、onClick を呼び出す customOnClick に同じ構文を使用している場合、次のエラーが発生します。
明示的に Void を返すように ViewModel を変更する必要がないように、Unit で動作させる方法はありますか? 私のすべてのハンドラーの?
サンプルプロジェクト
プロジェクト build.gradle
モジュール (アプリ) build.gradle
MainActivity.kt
MainViewModel.kt
Bindings.kt
activity_main.xml
java - kotlin アノテーション プロセッサの null 許容型
私は Kotlin の注釈プロセッサに取り組んでおり、処理された要素は Java にあるため、?
代わりに@Nullable
注釈を使用して nullables を受け取ることはありません。それで問題ありませんが、型や高次関数で null パラメータを受け取るという問題に直面しています。 、通常のパラメーターの場合。
私はその注釈java.lang.String
でプロセスで受け取ります。@org.jetbrains.annotations.Nullable
しかしList<String?>
、たとえばjava.util.List<java.lang.String>
、タイプ引数ではなくメイン要素にない注釈なしで私を返します。これにより、不明な null 許容状態が発生します。
javax.lang.model.util.Types
ある種の結果を見つけるために使用しようとしましたが、何も見つかりませんでした。
私が現在使用しているコードの一部:
すべての助けをいただければ幸いです。