如何将图像从活动 A 传递到活动 B?

Posted

技术标签:

【中文标题】如何将图像从活动 A 传递到活动 B?【英文标题】:How I can pass images from activity A to activity B? 【发布时间】:2021-10-30 12:21:32 【问题描述】:

我创建了一个列表,当我单击任何项​​目时,我想将图像发送到另一个活动。

代码如下:

 

    lv.onItemClickListener = object : AdapterView.OnItemClickListener 
                override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) 
                    if (position==0)
                        startActivity(Intent(this@HomeActivity,DisplayActivity::class.java).apply 
                            putExtra("v1",R.drawable.h2)
                        )
                    
                
            

我在B 活动中放置了一个空的ImageView 来接收传递的图像。 我应该在活动B 中写什么?

【问题讨论】:

【参考方案1】:

实际上,您并没有尝试将位图传递给第二个活动,而是传递了整数可绘制资源 id。 所以,在第二个活动中尝试从意图中读取integer .. 类似这样的......

val intent:Intent=getIntent()
val image:Int= intent.getIntExtra("v1")

【讨论】:

val resourceId:Int= intent.getIntExtra("resourceid") 我们喜欢可读的代码 ;-) @blackapps 设置额外名称 (v1) 并将 const 资源 id 传递给另一个活动,他会关心可读性吗??【参考方案2】:

你在使用 SQLite 吗?由于图像有时太大,最好的方法是将图像保存在 SQLite 中,并通过意图传递 ID。然后,在其他活动中重新阅读。

【讨论】:

【参考方案3】:

如果您尝试将 drawable 作为位图传递,请在下面的代码中尝试

/*** convert drawable to bit-map*****/

     val icon = BitmapFactory.decodeResource(
            this.getResources(),
            R.drawable.image_one
        )

/**************get byte array from bitmap ************/

      val bStream = ByteArrayOutputStream()
            icon.compress(Bitmap.CompressFormat.PNG, 100, bStream)
            val byteArray: ByteArray = bStream.toByteArray()

/****************** pass byte array to next activity usign intent**********/

    val anotherIntent = Intent(this, anotherActivity::class.java)
            anotherIntent.putExtra("image", byteArray)
            startActivity(anotherIntent)

/************** get drawable in another activity ***************/

           val bmp: Bitmap
    
            val byteArray = intent.getByteArrayExtra("image")
            bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray!!.size)

希望它对你有用

【讨论】:

eIntent 有 1 或 2 MB 的限制。将图像作为字节流传递对于任何非平凡的使用来说都太过分了。相反,它们应该传递资源 ID(用于可绘制对象)或图像文件的 URI。

以上是关于如何将图像从活动 A 传递到活动 B?的主要内容,如果未能解决你的问题,请参考以下文章

如何将整数从一个活动传递到另一个活动?

如何在 Kotlin 中将对象列表从活动 A 传递到活动 B?

如果未选择图像,如何将默认图像传递给先前的活动

将一个 mutableList 从活动 A 传递到 Kotlin 中的活动 B。

如何将列表数据从活动 A 发送到活动 B 并在活动 B 中编辑数据

将图像从活动传递到另一个活动?