Расширения 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.

0 ответов

Другие вопросы по тегам