保存后不显示个人资料图像(它只显示空白屏幕) [英] Profile image not showing after saving(it just shows blank white screen)

查看:40
本文介绍了保存后不显示个人资料图像(它只显示空白屏幕)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试上传用户个人资料图片并存储在 firebase 中.我的图片成功存储在 firebase 存储和用户数据库中.

当我上传图片时,它显示在我的屏幕上,但是一旦我保存并重新打开设置以查看个人资料图片,它就不会显示,它只会显示空白的白屏(但重新打开时会显示姓名和电话,只有图片不显示)

我附上了从数据库获取值并在 ui 中显示的代码,还添加了 saveUserInformation(),当用户单击保存图像按钮时调用该代码,此函数将姓名、电话和个人资料图像保存在数据库中.我在下面添加了数据库的屏幕截图,并添加了我收到的错误片段.

我做错了什么?

这是我控制台记录时滑翔输出的内容:profile img here:Target for: android.support.v7.widget.AppCompatImageView{528bbb2 V.ED..C.. ......ID 0,0-300,300 #7f0a00b9 app:id/profileImage}[CDS]rx超时:0

 mCustomerDatabase.addValueEventListener(object :ValueEventListener{覆盖乐趣 onDataChange(dataSnapshot: DataSnapshot) {if(dataSnapshot.exists() && dataSnapshot.childrenCount>0){val 地图:地图<*,*>= dataSnapshot.value as Map<*,*>if(map["name"] !=null){mName=map["name"].toString()mNameField.setText(mName)}如果(地图[电话"]!=空){mPhone=map["phone"].toString()mPhoneField.setText(mPhone)}if(map["profileImageUrl"]!=null){mProfileImageUrl=map["profileImageUrl"].toString()Glide.with(applicationContext).load(mProfileImageUrl).into(mProfileImage)val a=Glide.with(applicationContext).load(mProfileImageUrl).into(mProfileImage)打印(这里的个人资料图片:$a")}}}覆盖乐趣 onCancelled(p0: DatabaseError) {TODO("not implementation")//改变创建的函数体使用 File |设置 |文件模板.}})

 私人乐趣 saveUserInformation(){mName=mNameField.text.toString()mPhone=mPhoneField.text.toString()val userInfo=HashMap()userInfo.put("name",mName)userInfo.put("phone",mPhone)mCustomerDatabase.updateChildren(userInfo)如果(resultUri!=null){val imagePath:StorageReference=mStorage.child("customer_profile_image").child(userId).child(resultUri.lastPathSegment)val uploadTask:UploadTask=imagePath.putFile(resultUri)uploadTask.addOnSuccessListener(OnSuccessListener (){taskSnapshot->val downloadUrl: 任务=taskSnapshot.storage.downloadUrlval newImage=HashMap()newImage["profileImageUrl"] = downloadUrl.toString()mCustomerDatabase.updateChildren(newImage)}).addOnFailureListener(OnFailureListener() {Toast.makeText(this,"个人资料图片未上传",Toast.LENGTH_SHORT).show()})}结束()}

 com.google.android.gms.tasks.zzu@c0645c1 加载失败,大小为 [300x300]类 com.bumptech.glide.load.engine.GlideException:无法加载资源有3个原因:java.io.FileNotFoundException(/com.google.android.gms.tasks.zzu@c0645c1: open failed: ENOENT (No such file or directory))java.io.FileNotFoundException(没有那个文件或目录)java.io.FileNotFoundException(没有那个文件或目录)调用 GlideException#logRootCauses(String) 了解更多细节原因 (1 of 3): class com.bumptech.glide.load.engine.GlideException: Fetching data failed, class java.io.InputStream, LOCAL有1个原因:java.io.FileNotFoundException(/com.google.android.gms.tasks.zzu@c0645c1: open failed: ENOENT (No such file or directory))调用 GlideException#logRootCauses(String) 了解更多细节原因 (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetch failed有1个原因:java.io.FileNotFoundException(/com.google.android.gms.tasks.zzu@c0645c1: open failed: ENOENT (No such file or directory))调用 GlideException#logRootCauses(String) 了解更多细节原因 (1 of 1): class java.io.FileNotFoundException:/com.google.android.gms.tasks.zzu@c0645c1: open failed: ENOENT (No such file or directory)原因 (2 of 3): class com.bumptech.glide.load.engine.GlideException: Fetching data failed, class android.os.ParcelFileDescriptor, LOCAL有1个原因:java.io.FileNotFoundException(没有那个文件或目录)调用 GlideException#logRootCauses(String) 了解更多细节原因 (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetch failed有1个原因:java.io.FileNotFoundException(没有那个文件或目录)调用 GlideException#logRootCauses(String) 了解更多细节原因 (1 of 1): class java.io.FileNotFoundException: No such file or directory原因 (3 of 3): class com.bumptech.glide.load.engine.GlideException: 获取数据失败, class android.content.res.AssetFileDescriptor, LOCAL有1个原因:java.io.FileNotFoundException(没有那个文件或目录)调用 GlideException#logRootCauses(String) 了解更多细节原因 (1 of 1): class java.io.FileNotFoundException: No such file or directory02-04 15:21:14.109 25281-25281/com.sarah.taxi I/Glide:根本原因(3 个中的 1 个)java.io.FileNotFoundException:/com.google.android.gms.tasks.zzu@c0645c1:打开失败:ENOENT(没有这样的文件或目录)在 libcore.io.IoBridge.open(IoBridge.java:487)在 java.io.FileInputStream.(FileInputStream.java:76)在 java.io.FileInputStream.(FileInputStream.java:103)在 android.content.ContentResolver.openInputStream(ContentResolver.java:689)在 com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResourceFromUri(StreamLocalUriFetcher.java:85)在 com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:60)在 com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:15)在 com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)在 com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272)在 com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)在 java.lang.Thread.run(Thread.java:818)在 com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446)引起:android.system.ErrnoException:打开失败:ENOENT(没有那个文件或目录)在 libcore.io.Posix.open(本机方法)在 libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)在 libcore.io.IoBridge.open(IoBridge.java:473)在 java.io.FileInputStream.(FileInputStream.java:76)在 java.io.FileInputStream.(FileInputStream.java:103)在 android.content.ContentResolver.openInputStream(ContentResolver.java:689)在 com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResourceFromUri(StreamLocalUriFetcher.java:85)在 com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:60)在 com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:15)在 com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)在 com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272)在 com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)在 java.lang.Thread.run(Thread.java:818)在 com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446)02-04 15:21:14.110 25281-25281/com.sarah.taxi I/Glide:根本原因(3 个中的 2 个)java.io.FileNotFoundException: 没有这样的文件或目录在 android.os.Parcel.openFileDescriptor(本机方法)在 android.os.ParcelFileDescriptor.openInternal(ParcelFileDescriptor.java:270)在 android.os.ParcelFileDescriptor.open(ParcelFileDescriptor.java:200)在 android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:966)在 android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:894)在 com.bumptech.glide.load.data.FileDescriptorLocalUriFetcher.loadResource(FileDescriptorLocalUriFetcher.java:22)在 com.bumptech.glide.load.data.FileDescriptorLocalUriFetcher.loadResource(FileDescriptorLocalUriFetcher.java:14)在 com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)在 com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:397)在 com.bumptech.glide.load.engine.SourceGenerator.onLoadFailed(SourceGenerator.java:119)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:153)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:144)在 com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:49)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)在 com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272)在 com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)在 java.lang.Thread.run(Thread.java:818)在 com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446)根本原因(3 个中的 3 个)java.io.FileNotFoundException: 没有这样的文件或目录在 android.os.Parcel.openFileDescriptor(本机方法)在 android.os.ParcelFileDescriptor.openInternal(ParcelFileDescriptor.java:270)在 android.os.ParcelFileDescriptor.open(ParcelFileDescriptor.java:200)在 android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:966)在 android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:894)在 com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:22)在 com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:13)在 com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)在 com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:397)在 com.bumptech.glide.load.engine.SourceGenerator.onLoadFailed(SourceGenerator.java:119)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:153)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:144)在 com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:49)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)在 com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:397)在 com.bumptech.glide.load.engine.SourceGenerator.onLoadFailed(SourceGenerator.java:119)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:153)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:144)在 com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:49)在 com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)在 com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)在 com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)在 com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272)在 com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)在 java.lang.Thread.run(Thread.java:818)在 com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446)

看到红线了吗?它实际保存的是内存中对象的地址,而不是不是图像网址.发生这种情况是因为您正在对 downloadUrl 对象调用 toString() 方法.所以你获取下载 url 的方式是不正确的.这个 是获取 url 的正确方法.获取图像的 url 并将其添加到数据库后,一切都会按预期工作.

I am trying to upload user profile image and store in firebase.My image successfully stores in firebase storage and in the user database.

When I upload the image it shows on my screen,but once I save and reopen the settings to see the profile image,it does not show,it just shows blank white screen(but the name and phone show when reopened,only image does not show)

I have attached the code that gets value from db and shows in ui and also added the saveUserInformation() which is called when the user clicks the save image button and this function saves name,phone and profileimage in db. I have added screenshot of database below and also added the snippet of error I am getting.

What am I doing wrong?

This is what glide outputs when i console logged it : profile img here:Target for: android.support.v7.widget.AppCompatImageView{528bbb2 V.ED..C.. ......ID 0,0-300,300 #7f0a00b9 app:id/profileImage}[CDS]rx timeout:0

 mCustomerDatabase.addValueEventListener(object :ValueEventListener{
            override fun onDataChange(dataSnapshot: DataSnapshot) {
                if(dataSnapshot.exists() && dataSnapshot.childrenCount>0){
                    val map:Map<*,*> = dataSnapshot.value as Map<*,*>
                    if(map["name"] !=null){
                        mName=map["name"].toString()
                        mNameField.setText(mName)
                    }
                    if(map["phone"]!=null){
                        mPhone=map["phone"].toString()
                        mPhoneField.setText(mPhone)
                    }
                    if(map["profileImageUrl"]!=null){
                        mProfileImageUrl=map["profileImageUrl"].toString()

                        Glide.with(applicationContext).load(mProfileImageUrl).into(mProfileImage)
                        val a=Glide.with(applicationContext).load(mProfileImageUrl).into(mProfileImage)

                        print("profile img here:$a")

                    }

                }

            }

            override fun onCancelled(p0: DatabaseError) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }
        })

    private fun saveUserInformation(){
        mName=mNameField.text.toString()
        mPhone=mPhoneField.text.toString()
        val userInfo=HashMap<String,Any>()
        userInfo.put("name",mName)
        userInfo.put("phone",mPhone)
        mCustomerDatabase.updateChildren(userInfo)
        if(resultUri!=null){
            val imagePath:StorageReference=mStorage.child("customer_profile_image").child(userId).child(resultUri.lastPathSegment )
            val uploadTask:UploadTask=imagePath.putFile(resultUri)
            uploadTask.addOnSuccessListener(OnSuccessListener <UploadTask.TaskSnapshot>(){taskSnapshot->
                    val downloadUrl: Task<Uri> =taskSnapshot.storage.downloadUrl
                    val newImage= HashMap<String,Any>()
                    newImage["profileImageUrl"] = downloadUrl.toString()
                    mCustomerDatabase.updateChildren(newImage)

            }).addOnFailureListener(OnFailureListener() {
                Toast.makeText(this,"Profile image not uploaded",Toast.LENGTH_SHORT).show()
            })
        }
        finish()
    }

Load failed for com.google.android.gms.tasks.zzu@c0645c1 with size [300x300]
    class com.bumptech.glide.load.engine.GlideException: Failed to load resource
    There were 3 causes:
    java.io.FileNotFoundException(/com.google.android.gms.tasks.zzu@c0645c1: open failed: ENOENT (No such file or directory))
    java.io.FileNotFoundException(No such file or directory)
    java.io.FileNotFoundException(No such file or directory)
     call GlideException#logRootCauses(String) for more detail
      Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Fetching data failed, class java.io.InputStream, LOCAL
    There was 1 cause:
    java.io.FileNotFoundException(/com.google.android.gms.tasks.zzu@c0645c1: open failed: ENOENT (No such file or directory))
     call GlideException#logRootCauses(String) for more detail
        Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetch failed
    There was 1 cause:
    java.io.FileNotFoundException(/com.google.android.gms.tasks.zzu@c0645c1: open failed: ENOENT (No such file or directory))
     call GlideException#logRootCauses(String) for more detail
          Cause (1 of 1): class java.io.FileNotFoundException: /com.google.android.gms.tasks.zzu@c0645c1: open failed: ENOENT (No such file or directory)
      Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Fetching data failed, class android.os.ParcelFileDescriptor, LOCAL
    There was 1 cause:
    java.io.FileNotFoundException(No such file or directory)
     call GlideException#logRootCauses(String) for more detail
        Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetch failed
    There was 1 cause:
    java.io.FileNotFoundException(No such file or directory)
     call GlideException#logRootCauses(String) for more detail
          Cause (1 of 1): class java.io.FileNotFoundException: No such file or directory
      Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Fetching data failed, class android.content.res.AssetFileDescriptor, LOCAL
    There was 1 cause:
    java.io.FileNotFoundException(No such file or directory)
     call GlideException#logRootCauses(String) for more detail
        Cause (1 of 1): class java.io.FileNotFoundException: No such file or directory
02-04 15:21:14.109 25281-25281/com.sarah.taxi I/Glide: Root cause (1 of 3)
    java.io.FileNotFoundException: /com.google.android.gms.tasks.zzu@c0645c1: open failed: ENOENT (No such file or directory)
        at libcore.io.IoBridge.open(IoBridge.java:487)
        at java.io.FileInputStream.<init>(FileInputStream.java:76)
        at java.io.FileInputStream.<init>(FileInputStream.java:103)
        at android.content.ContentResolver.openInputStream(ContentResolver.java:689)
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResourceFromUri(StreamLocalUriFetcher.java:85)
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:60)
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:15)
        at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:818)
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446)
     Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
        at libcore.io.Posix.open(Native Method)
        at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
        at libcore.io.IoBridge.open(IoBridge.java:473)
        at java.io.FileInputStream.<init>(FileInputStream.java:76) 
        at java.io.FileInputStream.<init>(FileInputStream.java:103) 
        at android.content.ContentResolver.openInputStream(ContentResolver.java:689) 
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResourceFromUri(StreamLocalUriFetcher.java:85) 
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:60) 
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:15) 
        at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44) 
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99) 
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62) 
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302) 
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272) 
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
        at java.lang.Thread.run(Thread.java:818) 
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446) 
02-04 15:21:14.110 25281-25281/com.sarah.taxi I/Glide: Root cause (2 of 3)
    java.io.FileNotFoundException: No such file or directory
        at android.os.Parcel.openFileDescriptor(Native Method)
        at android.os.ParcelFileDescriptor.openInternal(ParcelFileDescriptor.java:270)
        at android.os.ParcelFileDescriptor.open(ParcelFileDescriptor.java:200)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:966)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:894)
        at com.bumptech.glide.load.data.FileDescriptorLocalUriFetcher.loadResource(FileDescriptorLocalUriFetcher.java:22)
        at com.bumptech.glide.load.data.FileDescriptorLocalUriFetcher.loadResource(FileDescriptorLocalUriFetcher.java:14)
        at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)
        at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:397)
        at com.bumptech.glide.load.engine.SourceGenerator.onLoadFailed(SourceGenerator.java:119)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:153)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:144)
        at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:49)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:818)
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446)
    Root cause (3 of 3)
    java.io.FileNotFoundException: No such file or directory
        at android.os.Parcel.openFileDescriptor(Native Method)
        at android.os.ParcelFileDescriptor.openInternal(ParcelFileDescriptor.java:270)
        at android.os.ParcelFileDescriptor.open(ParcelFileDescriptor.java:200)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:966)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:894)
        at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:22)
        at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:13)
        at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)
        at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:397)
        at com.bumptech.glide.load.engine.SourceGenerator.onLoadFailed(SourceGenerator.java:119)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:153)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:144)
        at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:49)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)
        at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:397)
        at com.bumptech.glide.load.engine.SourceGenerator.onLoadFailed(SourceGenerator.java:119)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:153)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:144)
        at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:49)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:818)
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446)

enter image description here

解决方案

You are getting the following error:

Load failed for com.google.android.gms.tasks.zzu@c0645c1

Because you are trying to display an image that does not exist. As I see in your database, the profileImageUrl property holds an image url that is not valid.

See the red line? What it actually holds is the address of an object from the memory and not an image url. This is happening because you are calling toString() method on the downloadUrl object. So the way you are get the donwload url is not correct. This is the correct way for getting the url. Once you get url of the image and you add it to the database and everything will work as expected.

这篇关于保存后不显示个人资料图像(它只显示空白屏幕)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆