Firebaseのデータを関数を読んで返したいのですがjava.lang.IllegalStateException: Task is not yet completeがでてうまく動きません。
どうすればFirebaseのデータだけ返却できますか?
UserRepo側
Kotlin
1fun getUser(userId: String): User? { 2 var data: User? = null 3 userRef.document(userId).get().addOnSuccessListener { documentSnapshot -> 4 if (documentSnapshot.exists()) { 5 data = documentSnapshot.toObject(User::class.java) 6 } 7 } 8 return data 9 }
activity側
Koltin
1val userData = UserRepository.getUser(user.uid)
Firebaseのデータは非同期で返ってくるので、非同期処理を行う必要があります。
すみませんがどのようにするのか教えていただけませんか?
Suspend使ってみたのですがうまくいきませんでした
getUserからはFirebaseの結果は返せませんので、結果を受け取るラムダ式の中に処理を書く必要があります。getUserを使って処理を行う側のコードも貼ってくれたら、もうちょっとましなアドバイスができると思います。
変更しました
その userData をどう使うかの問題なので、それじゃなにもわかりません。
とりあえず TextView にユーザー名を表示するとかなら、if (documentSnapshot.exists()) { の中で textView.setText() することになると思います。
やはりそうなりますよね。
そのデータだけ抜き取るのは、難しそうですね
回答1件
あなたの回答
tips
プレビュー