Расширения Kotlin / синтетические свойства: один и тот же объект в нескольких вызовах Fragment.onViewCreated()
Я использую kotlin-android-extensions для импорта синтетических свойств вида из моего макета в мой фрагмент. В моем onViewCreated()
Метод фрагмента, который я вызываю addTextChangedListener()
на EditText
посмотреть, что это синтетический импорт. Это работает нормально в первый раз, когда создается экземпляр Fragment, но в следующий раз, когда он появляется, мой новый слушатель добавляется к тому же объекту представления, что и при последнем вызове. Так что теперь оба TextChangedListener
объекты запускаются при изменении текста, с предсказуемо плохими результатами. Насколько я могу судить, вид из первого появления фрагмента никогда не разыменовывается.
Вот мой вывод из журнала объекта просмотра, который показывает, что это то же самое.
Первое появление:
AmountTextWatcher (com.redacted.util.AmountTextWatcher@36d1ccc) added to amount_edit_text: android.support.v7.widget.AppCompatEditText{79e2a VFED..CL. ......I. 0,0-0,0 #7f0f013a app:id/amount_edit_text}
Второе появление:
AmountTextWatcher (com.redacted.util.AmountTextWatcher@5812584) added to amount_edit_text: android.support.v7.widget.AppCompatEditText{79e2a VFED..CL. ......ID 0,0-434,200 #7f0f013a app:id/amount_edit_text}
Конечно, я могу обойти эту проблему, используя findViewById()
чтобы получить доступ к моему представлению вместо синтетической ссылки, но мне интересно, работает ли кто-нибудь еще с этой проблемой и есть ли лучший способ справиться с этим (кроме использования синтетической ссылки на представление).
К вашему сведению: Использование Kotlin версии 1.0.6.