Firebase存储的OnSuccessListener回调没有调用

通过Firebase存储上传文件时,onSuccess方法不会调用。

我目前正在运行Android Studio 3.0 Canary 2,其中包含“com.google.firebase:firebase-storage:10.2.6”。

fun uploadImage(pathToImage: String, downloadCallback: FirebaseCallback<String?>) { val file = Uri.fromFile(File(pathToImage)) val ref = mStorRef.child("images/"+file.lastPathSegment) ref.putFile(file).addOnSuccessListener { object : OnSuccessListener<UploadTask.TaskSnapshot> { override fun onSuccess(taskSnapshot: UploadTask.TaskSnapshot?) { val url = taskSnapshot?.downloadUrl Log.d("FirebaseManager", "Upload Successful") downloadCallback.callback(url.toString()) } } } } 

通过使用{} ,您通过SAM转换传递一个lambda作为侦听器。 在这个lambda里面,你定义了成功应该发生的事情:你正在创建一个从未使用过的object 。 要传入侦听器的object ,使用()

 ref.putFile(file).addOnSuccessListener ( object : OnSuccessListener<UploadTask.TaskSnapshot> { override fun onSuccess(taskSnapshot: UploadTask.TaskSnapshot?) { val url = taskSnapshot?.downloadUrl Log.d("FirebaseManager", "Upload Successful") downloadCallback.callback(url.toString()) } } ) 

或者只用SAM转换,而不显式创建一个object

 ref.putFile(file).addOnSuccessListener { taskSnapshot -> val url = taskSnapshot?.downloadUrl Log.d("FirebaseManager", "Upload Successful") downloadCallback.callback(url.toString()) }