Я пытаюсь использовать android-input-mask by RedMadRobot в моем проекте Android Kotlin.Но в настоящее время я имею дело с очень странным поведением.Библиотека работает только тогда, когда я отключаю компонент навигации Android.
Мой макет activity_main.xml
содержит следующий фрагмент:
<fragment
android:id="@+id/nav_host"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/navigation"
app:defaultNavHost="true"/>
Затем в пункте назначения запуска, определенного в компоненте навигации, у меня есть:
<EditText
android:id="@+id/test"
android:inputType="number"
android:digits="1234567890+-() "
{ omitted for sake of simplicity } />
Наконец, в файле SignUpFragment.kt
есть следующие строки кода:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val listener = MaskedTextChangedListener.installOn(
test,
"+7 ([000]) [000]-[00]-[00]",
object : MaskedTextChangedListener.ValueListener {
override fun onTextChanged(maskFilled: Boolean, extractedValue: String, formattedValue: String) {
Log.d("TAG", extractedValue)
Log.d("TAG", maskFilled.toString())
}
}
)
test.hint = listener.placeholder()
}
Но это не работает, как вы можете видеть на следующем рисунке:
Однако, когда я жестко кодирую фрагмент регистрации в файле activity_main.xml
, все отлично работает:
<fragment
android:id="@+id/fragment"
android:name="my.app.SignUpFragment"
{ omitted for sake of simplicity } />
Мой вопрос: Есть ли какое-нибудь правдоподобное объяснение этой "ошибке"?Я что-то путаю?Как я могу это решить?
Спасибо за помощь.
РЕДАКТИРОВАТЬ:
То же поведение для сообщений об ошибках.Если я введу эту строку кода:
test.error = "Error message"
с помощью компонента навигации Android, сообщение об ошибке не отображается.Однако, если я жестко закодирую фрагмент в макете основной активности, появится сообщение об ошибке.