java.lang.RuntimeException:使用EditText(数字)双向数据绑定启动Fragment时,无法调用观察者方法

问题描述 投票:0回答:1

我正在尝试将MutableLiveData<Int>绑定到EditText元素。我已经实现了绑定适配器,但是当我开始活动时,出现错误:java.lang.RuntimeException: Failed to call observer method

感谢您的帮助。

代码:

ViewModel

val serverPort = MutableLiveData<Int>(9330)

XML

    <data>
        <variable
            name="vm"
            type="...LoginViewModel" />
    </data>
    <com.google.android.material.textfield.TextInputEditText
                        android:layout_width="match_parent"
                        android:layout_height="50dp"
                        android:layout_gravity="center"
                        android:inputType="number"
                        android:text="@={vm.serverPort}" />

适配器

    object Converter {


    @BindingConversion
    @JvmStatic
    fun intToStr(value: Int?): String? {
        return value.toString()
    }

    @InverseBindingAdapter(attribute = "android:text")
    @JvmStatic
    fun captureIntValue(view: EditText?): Int? {
        var value: Long = 0
        try {
            value = view!!.text.toString().toInt().toLong()
        } catch (e: NumberFormatException) {
            e.printStackTrace()
        }
        return value.toInt()
    }
android android-databinding android-livedata android-jetpack
1个回答
0
投票

您必须尝试将字符串值用于设置android:text

 <TextView
      android:layout_width="match_parent"
      android:layout_height="50dp"
      android:layout_gravity="center"
      android:inputType="number"
      android:text="@{String.valueOf(vm.serverPort)}" />
© www.soinside.com 2019 - 2024. All rights reserved.