TextWatcher 在 DialogFragment 中不起作用
TextWatcher not working in DialogFragment
我使用此库中的 TextInputLayout
:
implementation 'com.google.android.material:material:1.0.0'
我在布局中有以下部分:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/phoneNumberLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/phoneNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/label_phone_number"/>
</com.google.android.material.textfield.TextInputLayout>
我启用了 Kotlin Android 扩展,我尝试将 TextWatcher 分配给 phoneNumber
,如下所示:
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
phoneNumber.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
Log.e("DialogFragment", "phoneNumber::onTextChanged()")
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
Log.e("DialogFragment", "phoneNumber current text: " + s)
}
})
}
当我开始打字时没有任何反应,浪费了几个小时...任何帮助将不胜感激。
您正在 onActivityCreated
中添加文本观察器,它不包含您的根视图。你应该引用你的 phone(TextInputEditText) 从 View
膨胀在 onCreateView
或内部 onViewCreated
正如@Miha_x64 所建议的。虽然您的代码是正确的,但问题出在视图引用上。
我使用此库中的 TextInputLayout
:
implementation 'com.google.android.material:material:1.0.0'
我在布局中有以下部分:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/phoneNumberLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/phoneNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/label_phone_number"/>
</com.google.android.material.textfield.TextInputLayout>
我启用了 Kotlin Android 扩展,我尝试将 TextWatcher 分配给 phoneNumber
,如下所示:
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
phoneNumber.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
Log.e("DialogFragment", "phoneNumber::onTextChanged()")
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
Log.e("DialogFragment", "phoneNumber current text: " + s)
}
})
}
当我开始打字时没有任何反应,浪费了几个小时...任何帮助将不胜感激。
您正在 onActivityCreated
中添加文本观察器,它不包含您的根视图。你应该引用你的 phone(TextInputEditText) 从 View
膨胀在 onCreateView
或内部 onViewCreated
正如@Miha_x64 所建议的。虽然您的代码是正确的,但问题出在视图引用上。