У меня есть простая форма с одним 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!"
Почему мой код не работает и как я могу прослушать ввод символов в текстовом поле?
Моя цель - сохранить кнопку скрытой до тех пор, пока в поле не будет введено минимальное количество символов.