当前位置: 首页 > 知识库问答 >
问题:

加载大小为[0x0]的类com的null失败。邦普泰克。滑行负载发动机GlideException:收到空模型

周高畅
2023-03-14

我试图加载我保存在Firebase上的照片,它保存成功,但它不能再次加载图像错误是

“大小为[0x0]的类为com.bumptech.glide.Load.engine.GlideException的null加载失败:收到null模型”

我在代码中使用简单的一行

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    currentUser?.let{user ->
        Glide.with(this)
            .load(user.photoUrl)

            .into(image_view)

我在构建上的实现。格拉德尔

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.firebase:firebase-auth:19.3.0'
implementation 'com.google.firebase:firebase-database:19.2.1'
implementation 'com.google.firebase:firebase-firestore:21.4.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.navigation:navigation-fragment:2.2.1'
implementation 'androidx.navigation:navigation-ui:2.2.1'
implementation 'com.google.firebase:firebase-storage:19.1.1'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.1'
implementation 'androidx.navigation:navigation-ui-ktx:2.2.1'
implementation 'com.github.bumptech.glide:glide:4.8.0'
kapt 'com.github.bumptech.glide:compiler:4.8.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

在Gradle上应用插件。建筑

apply plugin: 'kotlin-kapt'

谢谢你以后的回答!

顺便说一句,这是我完整的代码片段

类NotificationsFragment:Fragment(){

private lateinit var notificationsViewModel: NotificationsViewModel
private lateinit var imageUri: Uri
private val REQUEST_IMAGE_CAPTURE = 100
private val currentUser = FirebaseAuth.getInstance().currentUser
private val user = FirebaseDatabase.getInstance()



override fun onCreateView(

    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?):
        View? {
    notificationsViewModel =
        ViewModelProviders.of(this).get(NotificationsViewModel::class.java)
    return inflater.inflate(R.layout.fragment_notifications,container,false)



}




override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)



    currentUser?.let{user ->
        Glide.with(this)
            .load(user.photoUrl)
            .placeholder(R.drawable.ic_profilepicture_box_orange_24dp)
            .into(image_view)






    }




    image_view.setOnClickListener {
        takePictureIntent()

    }
    button_save.setOnClickListener{

    }


}

private fun takePictureIntent() {
    Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { pictureIntent ->
        pictureIntent.resolveActivity(activity?.packageManager!!)?.also {
            startActivityForResult(pictureIntent, REQUEST_IMAGE_CAPTURE)
        }

    }


}


override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == AppCompatActivity.RESULT_OK) {
        val imageBitmap = data?.extras?.get("data") as Bitmap

        uploadImageAndSaveUri(imageBitmap)
    }
}

private fun uploadImageAndSaveUri(bitmap: Bitmap) {

    val baos = ByteArrayOutputStream()
    val baos1 = ByteArrayOutputStream()
    val storageRef = FirebaseStorage.getInstance()


        .reference

        .child("pics/${FirebaseAuth.getInstance().currentUser!!.uid}")
        .child("uid" + ".JPEG")
        .child("uid" + ".PNG")
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos1)
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos)
    val image = baos.toByteArray()
    val image1 = baos1.toByteArray()

    val upload = storageRef.putBytes(image)
    val upload1 = storageRef.putBytes(image1)

    upload.addOnCompleteListener { uploadTask ->
        if (uploadTask.isSuccessful){
            storageRef.downloadUrl.addOnCompleteListener{urlTask ->
                urlTask.result?.let{
                    imageUri = it
                    Toast.LENGTH_SHORT

                }

            }

        }

    }

    upload1.addOnCompleteListener { uploadTask1 ->
        if (uploadTask1.isSuccessful){
            storageRef.downloadUrl.addOnCompleteListener{urlTask ->
                urlTask.result?.let{
                    imageUri = it




                }

            }
        }

    }






    progressbar_pic.visibility = View.VISIBLE
    upload.addOnCompleteListener { uploadTask ->
        progressbar_pic.visibility = View.INVISIBLE

        if (uploadTask.isSuccessful) {
            storageRef.downloadUrl.addOnCompleteListener { urlTask ->
                urlTask.result?.let {
                    imageUri = it
                    imageUri.toString()
                    image_view.setImageBitmap(bitmap)


                }
            }
        } else {
            uploadTask.exception?.let {
                Toast.makeText(activity, "Upload Failed", Toast.LENGTH_SHORT).show();

            }
        }

    }

}

}

我修复了它,我必须添加更多的代码和编辑一些,这是修复,所以它会保存网址和照片。

private  fun uploadImagetoFirebaseStorage(){
    if (selectedPhotoUri == null) return
    val filename = UUID.randomUUID().toString()
    val ref = FirebaseStorage.getInstance().getReference("/images/$filename")

    ref.putFile(selectedPhotoUri!!)
        .addOnSuccessListener {
            Log.d("dsa","$it")
            ref.downloadUrl.addOnSuccessListener {
                it.toString()

                saveUsertoFirebaseDatabase(it.toString())
            }
        }

}

private fun saveUsertoFirebaseDatabase(profileImageUrl: String){
    val uid = FirebaseAuth.getInstance().uid ?: ""
    val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
    val user = User(uid,username_edittext_register.text.toString(),profileImageUrl)

    ref.setValue(user)
        .addOnSuccessListener {
            Log.d("","Saved!!!!!!")
        }


}

}

类用户(val-uid:String,val-username:String,val-profileImageUrl:String)

然后我就用了你平时用的滑翔模块

currentUser?.let{user ->

        Glide.with(this)

            .load(user.photoUrl)

            .into(image_view)


    }

共有1个答案

舒嘉德
2023-03-14

确保你已经输入相同的名称在Firebase数据库,例如-我试图发送图像在我的应用程序,在我的模型我已经声明了一个字符串'ImageUrl',但在Firebase存储我给了名称'图像',确保这两个名称都一样......这会解决问题

 类似资料:
  • 我试图加载图像在Android 10.但它不工作在Android 10。下面的Android 10其工作正常。有什么解决办法让我知道。我在这个错误上工作了4天。在模拟器中工作正常。在Redmi注6专业手机Android 10显示此错误 依赖关系 滑行

  • 当我试图在仿真器x86-64上运行我的项目时,我遇到了崩溃。我试过很多不同的解决方法,但没有人帮我解决我的问题。 工程 ;移动:本机库无法加载:java.lang.UnsatisfiedLinkError:Dalvik.System.PathClassLoader[DexPathList[[zip文件“/data/app/package-name-1/base.apk”],NativeLibrar

  • import { Scroll } from 'feui'; components: { [Scroll.name]: Scroll, }, data() { return { items: [], infiniteCount: 0, hasHeader: true }; } methods: { onRefresh(done) {

  • 我正试图通过Glide将图像加载到。但是图像没有加载-我得到一个错误。我正在使用以下代码 日志

  • 我遇到了使用作曲家psr-4自动加载功能和PHPUnit的问题。问题发生在我的本地机器以及TravisCI版本上。单元测试无法找到我的类,而普通脚本可以找到。 当然,任何配置都有问题,但我无法找出我做错了什么。提前感谢你的帮助。 这是我的项目文件结构: 公共/ src/ http/ urlhelper。php 小黑 超文本传输协议/ urlhelper.test.php 这是我的作曲家的作品。js

  • 主要内容:1.类加载过程,2.类加载时机,3.类加载器,4.类加载机制:当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。 1.类加载过程 1.1加载 加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Cl