Kotlin:如何将图像从 Activity 传递到 Fragment

Kotlin : How to pass image from Activity to Fragment

我试图将图像从我的 Activity ViewModel 传递到 Fragment,Fragment 收到数据但它没有显示在 Fragment 上。这是我的代码

主要Activity视图模型

    val storageRef = FirebaseStorage.getInstance().reference.child("Users/$nisSiswa.png")
        val file = File.createTempFile("image", "png")
        storageRef.getFile(file).addOnSuccessListener {
            val bitmap : Bitmap = BitmapFactory.decodeFile(file.absolutePath)
            val bitmapString = ByteArrayOutputStream()
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, bitmapString)
            val byteArray : ByteArray = bitmapString.toByteArray()
            profileBundle.putByteArray("foto", byteArray)
            profilFragment.arguments = profileBundle
            crashlytics.log("Bundle Dikirimkan ke Fragment")
            loadingDialog.dismissLoading()
        }

这是我检索图像的片段代码

super.onViewCreated(view, savedInstanceState)
        binding.tvNamaSiswa.setText(arguments?.getString("nama"))
        binding.tvNisSiswa.setText(arguments?.getString("nis"))
        binding.tvEmailSiswa.setText(arguments?.getString("email"))
        val byteFoto = arguments?.getByteArray("foto")
        if (byteFoto != null) {
            crashlytics.log("Data Berhasil Diterima Profile Fragment")
            val bitmapFoto : Bitmap = BitmapFactory.decodeByteArray(byteFoto,0, DEFAULT_BUFFER_SIZE)
            val encoded : ByteArray? = Base64.decode(byteFoto, Base64.DEFAULT)
            val bitmap = encoded?.let { BitmapFactory.decodeByteArray(encoded, 0, it.size) }
            binding.ivProfil.setImageBitmap(bitmapFoto)
        } else {
            Toast.makeText(this.context, "File Bitmap Kosong", Toast.LENGTH_SHORT).show()
            binding.ivProfil.setImageResource(R.drawable.user_foto)
        }

您真的不应该在 Bundle 秒内传递位图,它们不适用于大量数据。最好传递您用来获取它的字符串引用 ("Users/$nisSiswa.png") 并让 Fragment 处理获取和显示它。

或者使用 activity 可以传递引用的 ViewModel,这样就会发生数据获取,并且片段 observe 获取它并显示当前数据。

您可能还应该使用像 Glide to display your images, which is the official recommendation 这样的库 - 只会让事情变得更容易!