找不到接受参数且资源链接失败的视图的设置器

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

我被卡在绑定适配器中。后面的适配器不起作用,IDE找不到该适配器。我尝试了许多解决方案,但都没有用。

我尝试了此问题中提供的所有答案,但没有任何效果:Cannot find the setter for attribute with parameter

注意:我有另一个适配器可以将图像加载到同一文件中,并且工作正常。

我想要实现的就是,只要用户在某个editText中输入字符,如果那个editText指定了目标,然后在字符数达到限制后请求目标焦点。

绑定适配器

@BindingAdapter(value = ["destination","limit"])
fun moveToNext(editText: EditText, dest: EditText, limit:Int) {
    editText.addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(s: Editable?) {

        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {

        }

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
            if (count == limit) {
                dest.requestFocus()
            }
        }

    })
}

in .xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:bind="http://schemas.android.com/tools">

    <data>

        <variable
            name="viewModel"
            type="com.eshaafi.eshaafi.ui.auth.mobile_verification.MobileVerificationViewModel" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:animateLayoutChanges="true">

        <ImageView
            android:id="@+id/logo"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_marginTop="48dp"
            android:src="@drawable/ic_launcher_512"
            android:transitionName="sharedLogo"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.35"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/logoText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="e s h a a f i"
            android:textColor="@color/colorLogoBlue"
            android:textSize="24sp"
            android:textStyle="bold"
            android:transitionName="sharedLogoText"
            app:layout_constraintBottom_toBottomOf="@+id/logo"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.12"
            app:layout_constraintStart_toEndOf="@+id/logo"
            app:layout_constraintTop_toTopOf="@+id/logo" />



        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="24dp"
            android:text="Wait for verification code"
            android:textColor="@color/colorBlack"
            android:textSize="18sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/logo" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="You will soon receive verification code on"
            android:textSize="14sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView" />

        <TextView
            android:id="@+id/mobileNumber"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@={viewModel.mobileNumber}"
            android:textColor="@color/colorBlack"
            android:textStyle="bold"
            android:textSize="16sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView2" />

        <EditText
            android:id="@+id/digit_1"
            style="@style/CodDigitEditText"
            android:text=""
            app:layout_constraintEnd_toStartOf="@+id/digit2"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginTop="32dp"
            app:layout_constraintTop_toBottomOf="@+id/mobileNumber"
            destination="@{digit2}"
            limit="1"
            />

        <EditText
            android:id="@+id/digit2"
            style="@style/CodDigitEditText"
            android:text=""
            app:layout_constraintEnd_toStartOf="@+id/digit_3"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toEndOf="@+id/digit_1"
            app:layout_constraintTop_toTopOf="@+id/digit_1" />

        <EditText
            android:id="@+id/digit_3"
            style="@style/CodDigitEditText"
            android:text=""
            app:layout_constraintEnd_toStartOf="@+id/dash"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toEndOf="@+id/digit2"
            app:layout_constraintTop_toTopOf="@+id/digit_1" />

        <View
            android:id="@+id/dash"
            android:layout_width="16dp"
            android:layout_height="2dp"
            android:background="@color/colorGrey"
            app:layout_constraintEnd_toStartOf="@+id/digit_4"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toEndOf="@+id/digit_3"
            app:layout_constraintTop_toTopOf="@id/digit_1"
            app:layout_constraintBottom_toBottomOf="@id/digit_1"/>

        <EditText
            android:id="@+id/digit_4"
            style="@style/CodDigitEditText"
            android:text=""
            app:layout_constraintEnd_toStartOf="@+id/digit_5"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toEndOf="@+id/dash"
            app:layout_constraintTop_toTopOf="@+id/digit_1" />

        <EditText
            android:id="@+id/digit_5"
            style="@style/CodDigitEditText"
            android:text=""
            app:layout_constraintEnd_toStartOf="@+id/digit_6"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toEndOf="@+id/digit_4"
            app:layout_constraintTop_toTopOf="@+id/digit_1" />

        <EditText
            android:id="@+id/digit_6"
            style="@style/CodDigitEditText"
            android:text=""
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toEndOf="@+id/digit_5"
            app:layout_constraintTop_toTopOf="@+id/digit_1"
            android:imeOptions="actionDone"/>


        <com.google.android.material.button.MaterialButton
            android:id="@+id/btnContinue"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="64dp"
            android:layout_marginRight="64dp"
            android:layout_marginBottom="16dp"
            android:alpha="0"
            android:padding="16dp"
            android:text="Continue"
            android:textColor="@color/colorPrimary"
            android:visibility="gone"
            app:backgroundTint="@color/colorWhite"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

Errorr

Cannot find a setter for <android.widget.EditText destination> that accepts parameter type 'android.widget.EditText'

android android-databinding android-binding-adapter
1个回答
0
投票

我自己弄清楚,问题不在于传递EditText,而是另一个参数

之前

 <EditText
            android:id="@+id/digit_1"
            style="@style/CodDigitEditText"
            android:text=""
            app:layout_constraintEnd_toStartOf="@+id/digit2"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginTop="32dp"
            app:layout_constraintTop_toBottomOf="@+id/mobileNumber"
            destination="@{digit2}"
            limit="1"
            />

注意,limit=1的值,这就是问题所在,我只是将其更改为limit="@{1}",错误消失了

之后

 <EditText
            android:id="@+id/digit_1"
            style="@style/CodDigitEditText"
            android:text=""
            app:layout_constraintEnd_toStartOf="@+id/digit2"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginTop="32dp"
            app:layout_constraintTop_toBottomOf="@+id/mobileNumber"
            destination="@{digit2}"
            limit="@{1}"
            />
© www.soinside.com 2019 - 2024. All rights reserved.