【发布时间】:2020-04-17 21:21:03
【问题描述】:
``我的问题是我的 elaniekle 函数在 storagew 函数结束之前启动。所以 mydownloadurl 在数据库中似乎为空,我该如何解决?谢谢。
enter code here ekle.setOnClickListener {
storage2()
elaniekle()
}
fun storage2() {
var uuid = UUID.randomUUID()
var ref = storage.reference
var imagename = "$uuid.jpg"
var imagesReference = ref.child("images").child(imagename)
imagesReference.putFile(imagelist[0]).addOnSuccessListener { taskSnapshot ->
var deyisen =** FirebaseStorage.getInstance().reference.child("images").child(imagename)
deyisen.downloadUrl.addOnSuccessListener { uri ->
mydownloadurl = uri
}
}
}
fun elaniekle(){
var sikmap= hashMapOf<String,Any>()
sikmap.put("Email",auth.currentUser!!.email.toString())
uniqueid = db.collection("Posts").document().id
sikmap.put("uniqueid",uniqueid.toString())
sikmap.put("qapaqsekli",mydownloadurl.toString())
db.collection("Posts").add(sikmap)
}
【问题讨论】:
-
把你的代码贴在你调用这两个函数的地方
-
putFile 是异步的,在上传完成之前立即返回。您附加到它返回的 Task 的侦听器会在上传完成后的一段时间后调用。您的代码会继续执行,直到发生这种情况,因此您不应事先依赖其结果。
-
您能解释一下我的代码的哪些部分需要更改吗?
标签: android firebase kotlin firebase-storage