TextInputEditText addTextChangedListener не вызывается при наборе текста - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть простая форма с одним TextInputEditText (компонент Material Design), и я не могу прослушать изменения текста. Добавление TextWatcher с addTextChangedListener, похоже, имеет нулевой эффект. Когда я запускаю свое приложение и ввожу данные для ввода с виртуальной клавиатуры, ни один из обратных вызовов не вызывается (точки прерывания отладки не достигаются), и мой TextView не обновляется:

Активность:

class MainActivity : AppCompatActivity() {


    private lateinit var webBankingIdLayout: TextInputLayout
    private lateinit var webBankingIdInput: TextInputEditText
    private lateinit var textView: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        webBankingIdLayout = findViewById<TextInputLayout>(R.id.web_banking_id_input_layout)
        webBankingIdInput = TextInputEditText(webBankingIdLayout.context)
        textView = findViewById<TextView>(R.id.temp_text)

        webBankingIdInput.addTextChangedListener(object: TextWatcher {
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
                s!!
            }
            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                s!!
                textView.text = s!!
            }
            override fun afterTextChanged(s: Editable?) {
                s!!
            }
        })
    }
}

План мероприятий:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/web_banking_id_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/web_banking_id_text_input"
        android:maxLines="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:inputType="text"
        android:hint="@string/web_banking_id_hint" />

</com.google.android.material.textfield.TextInputLayout>

<TextView
    android:id="@+id/temp_text"
    android:layout_width="250dp"
    android:layout_height="113dp"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/password_input_layout" />

Если, однако, я программно устанавливаю текст поля ввода, то вызываются обратные вызовы и обновляется TextView.

webBankingIdInput.text = "Yippee!"

Почему мой код не работает и как я могу прослушать ввод символов в текстовом поле?

Моя цель - сохранить кнопку скрытой до тех пор, пока в поле не будет введено минимальное количество символов.

1 Ответ

0 голосов
/ 02 ноября 2018

Вам нужно заменить:

webBankingIdInput = TextInputEditText(webBankingIdLayout.context)

до:

webBankingIdInput = findViewById<TextInputEditText>(R.id.web_banking_id_text_input)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...