当AllSuccess返回Uri而不是List时的任务

时间:2018-12-21 16:55:26

标签: android firebase kotlin

日志显示结果为列表。但是,我既无法通过索引访问列表,也无法将其转换为列表

Tasks.whenAllSuccess<List<Uri>>(tasks).addOnCompleteListener { tasks->
  info("Result is ${tasks.result}")
  val uri=tasks.result!![0]
  info("Result head is $uri")
  db.child("users").child(userId).child("placemarks").child(key).setValue(placemark){err,ref->
    placemarks.add(placemark)
    callback
  }
}

以下是日志和错误消息。 当我尝试通过索引访问时的错误消息:

 java.lang.ClassCastException: android.net.Uri$StringUri cannot be cast to java.util.List
    at org.wit.placemark.models.firebase.PlacemarkFireStore$create$3.onComplete(PlacemarkFireStore.kt:54)
    at com.google.android.gms.tasks.zzj.run(Unknown Source:4)
    at android.os.Handler.handleCallback(Handler.java:809)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:166)
    at android.app.ActivityThread.main(ActivityThread.java:7377)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)

日志:

I/PlacemarkFireStore: Result is [https://firebasestorage.googleapis.com/v0/b/placemark-1540061020843.appspot.com/o/oGJ7cZd7qXXbOEvKaVLthpQx9qL2%2FIMG-20181220-WA0012.jpg?alt=media&token=65f0c998-8d9f-47f9-ae49-30c59a934fb1, https://firebasestorage.googleapis.com/v0/b/placemark-1540061020843.appspot.com/o/oGJ7cZd7qXXbOEvKaVLthpQx9qL2%2FIMG-20181219-WA0009.jpg?alt=media&token=0a91873e-61a6-46d5-aa73-a343dc442848, https://firebasestorage.googleapis.com/v0/b/placemark-1540061020843.appspot.com/o/oGJ7cZd7qXXbOEvKaVLthpQx9qL2%2FIMG-20181219-WA0007.jpg?alt=media&token=de2b8c35-597e-4b73-a089-ad2c4e4248f9]

1 个答案:

答案 0 :(得分:0)

更改此行

Tasks.whenAllSuccess<List<Uri>>(tasks)

Tasks.whenAllSuccess<Uri>(tasks)

它解决了问题。该函数本身已经将结果转换为列表。

相关问题