``我的问题是我的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)
}
答案 0 :(得分:0)
您必须等待回调完成:
ekle.setOnClickListener {
storage2()
}
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
elaniekle()
}
}
}
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)
}