Привязка Kotlin View java.lang.IllegalStateException: представление не должно быть пустым - PullRequest
0 голосов
/ 28 ноября 2018

Я использую Просмотр привязки от Kotlin Android Extensions:

import kotlinx.android.synthetic.main.fragment_user_profile.*

Я хочу отобразить значение из Cloud Firestore во фрагменте :

FirebaseFirestore.getInstance()
    .collection("users")
    .document("1")
    .get()
    .addOnSuccessListener { doc ->
        my_text_view.text = doc["name"] as String
    }

Работает, если фрагмент все еще отображается при получении данных.Но если пользователь закрывает фрагмент (нажимая назад) до получения данных, происходит сбой:

java.lang.IllegalStateException: my_text_view must not be null

Как этого избежать?


КонечноЯ могу использовать my_text_view?.text = ..., но

  • Когда-нибудь я могу забыть поставить ?

  • Это не решает проблему, что слушательостается в живых после уничтожения фрагмента

Я думаю, что я хочу что-то вроде addOnSuccessListener(Activity, OnSuccessListener), но для фрагмента вместо деятельности

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете проверить обратный вызов, если фрагмент все еще добавлен к его активности хоста,

FirebaseFirestore.getInstance()
.collection("users")
.document("1")
.get()
.addOnSuccessListener { doc ->
    if (isAdded) {
        my_text_view.text = doc["name"] as String
    }
}

Однако, лучшим решением было бы перенести вашу бизнес-логику в модель представления.

...