HashMap is null so i cant get my data shown in the emulator from Firebase database

混江龙づ霸主 提交于 2019-12-25 17:14:07

问题


Android studio showed a warning so with ALT + ENTER the code

 val name = data[USERNAME] as String

became

val name = data?.get(USERNAME) as String

but my emulator is still crashing

 thoughtsCollectionRef.get()
.addOnSuccessListener { snapshot -> 
for(document in snapshot.documents){
val data = document.data 

//this is my code after listening to android studio 

val name = data?.get(USERNAME) as String
val timestamp = data?.get(TIMESTAMP) as Date
val thoughtTxt = data?.get(THOUGHT_TXT) as String
val numLikes = data?.get(NUM_LIKES) as Long
val numComments = data?.get(NUM_COMMENTS) as Long
 val documentId = document.id

//I edited every other variable with the safecall ?.get() and its still crashing

 val newThought = Thought(name,timestamp,thoughtTxt,numLikes.toInt(),numComments.toInt(),
                    documentId)


thoughts.add(newThought)
}

 thoughtsAdapter.notifyDataSetChanged()

回答1:


The data?.get(TIMESTAMP) call returns a Firebase Timestamp object. So instead of casting it to Date, you should cast it to com.google.firebase.Timestamp:

// imports
import com.google.firebase.Timestamp

...

// rest of the code
val timestamp = data?.get(TIMESTAMP) as? Timestamp

If you want to end up with a Date object, you can use the Timestamp method toDate():

val date = timestamp?.toDate()

Also note that you should use a safe casting operator as? instead of as in this case:

val name = data?.get(USERNAME) as? String
val timestamp = data?.get(TIMESTAMP) as? Timestamp
val thoughtTxt = data?.get(THOUGHT_TXT) as? String
val numLikes = data?.get(NUM_LIKES) as? Long
val numComments = data?.get(NUM_COMMENTS) as? Long

The data?.get(KEY) may produce a null object, which can't be cast to any type and the operation will result in a crash.



来源:https://stackoverflow.com/questions/57588460/hashmap-is-null-so-i-cant-get-my-data-shown-in-the-emulator-from-firebase-databa

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!