シークバーのonProgressChangedが機能していないとデータバインディング

Siddhpuraアミット:

私はデータバインディングでシークバーを使用し、以下の私のコードでいます

<data>

    <variable
        name="generatePasswordModel"
        type="android.account.model.GeneratePasswordModel" />

</data>

 <SeekBar
       android:id="@+id/sbPasswordLength"
       android:layout_width="0dp"
       android:layout_height="wrap_content"
       android:layout_marginLeft="10dp"
       android:layout_marginRight="10dp"
       android:layout_weight="1"
            android:onProgressChanged="@{generatePasswordModel.onValueChanged()}"
       android:max="20"
       android:min="4" />

そして、モデルクラスは以下の通りです

data class GeneratePasswordModel(
    private var seekValue: String,
    private var seekDisplay: String
) : BaseObservable() {


    var mSeekDisplay: String
        @Bindable get() = seekDisplay
        set(value) {
            seekDisplay = value
            notifyPropertyChanged(BR.mSeekDisplay)
        }

    fun onValueChanged(seekBar: SeekBar, progresValue: Int, fromUser: Boolean) {
        mSeekDisplay = progresValue.toString()
    }

}

しかし、私は、ビルドしながら、APKを、次のエラーを取得しています

ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1/Users/amitsiddhpura/Documents/.../app/build/generated/source/kapt/debug/.../android/DataBinderMapperImpl.java:18: error: cannot find symbol


                                                 import android.databinding.ActivityGeneratePasswordBindingImpl;
22:40:06.432 [ERROR] [system.err]                                         ^
22:40:06.432 [ERROR] [system.err]   symbol:   class ActivityGeneratePasswordBindingImpl
ジェイコブコリンズ:

:この質問にトップの答えをチェックシークバーデータバインディングエラー

あなたのXMLで引数を指定する必要があると表示されます。

android:onProgressChanged="@{(seekBar, value, fromUser)->generatePasswordModel.onValueChanged(seekBar, value, fromUser)}}

しかし、あなたが実際に使用していないため、seekBarまたはfromUserあなたのKotlinコードで、あなたはとてもあなたのような関数の定義を変更できます。

fun onValueChanged(progresValue: Int) {
        mSeekDisplay = progresValue.toString()
    }

そして、XMLは次のようになります。

android:onProgressChanged="@{(seekBar, value, fromUser)->generatePasswordModel.onValueChanged(value)}}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=320929&siteId=1