首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防火墙存储的OnSuccessListener回调不调用

防火墙存储的OnSuccessListener回调不调用
EN

Stack Overflow用户
提问于 2017-06-01 21:50:48
回答 1查看 3.5K关注 0票数 2

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

我目前正在使用'com.google.firebase:firebase-storage:10.2.6'.运行AndroidStudio3.0Canary2

代码语言:javascript
复制
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())
                }
            }
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-01 21:57:45

通过使用{},您可以通过山姆转换作为侦听器传入lambda。在这个lambda中,您定义了在成功时应该发生什么:您正在创建一个从未使用过的object。若要作为侦听器传入object,请使用()

代码语言:javascript
复制
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

代码语言:javascript
复制
ref.putFile(file).addOnSuccessListener { taskSnapshot ->
    val url = taskSnapshot?.downloadUrl
    Log.d("FirebaseManager", "Upload Successful")
    downloadCallback.callback(url.toString())
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44317631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档