You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:无法用Intent传递图片至其他Activity且图片预览异常

问题分析与解决方案

一、无法传递图片到SecondActivity的修复

你的代码仅实现了文本数据传递,完全缺失选中图片的Uri存储与传递逻辑,这是核心问题,按以下步骤修改:

  1. 添加图片Uri存储变量
    在MainActivity类内新增变量,用于保存选中的图片Uri:
private var selectedImageUri: Uri? = null
  1. 实现图片选择逻辑(使用Activity Result API)
    替换过时的startActivityForResult,用官方推荐的Activity Result API获取相册图片:
// 初始化图片选择的Launcher
private val pickImageLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri? ->
    uri?.let {
        selectedImageUri = it
        // 更新预览图片
        imageView.setImageURI(it)
    }
}

// 替换原pickImageGallery方法
private fun pickImageGallery() {
    pickImageLauncher.launch("image/*")
}
  1. 传递图片Uri到SecondActivity
    在提交按钮的点击事件中,将图片Uri与文本数据一同传递,同时添加权限标记确保目标页面能访问该图片:
btnSubmit.setOnClickListener{
    val nim = edNim.text.toString().toInt()
    val nama = edNama.text.toString()
    val email = edEmail.text.toString()
    val prodi = edProdi.text.toString()

    Intent(this, SecondActivity::class.java).also {
        it.putExtra("extra_nim", nim)
        it.putExtra("extra_nama", nama)
        it.putExtra("extra_email", email)
        it.putExtra("extra_prodi", prodi)
        // 传递选中的图片Uri
        selectedImageUri?.let { uri ->
            it.putExtra("extra_image_uri", uri)
            // 授予临时读取权限,避免目标页面无法访问图片
            it.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        }
        startActivity(it)
    }
}
  1. 在SecondActivity中接收并加载图片
    在SecondActivity内获取Uri并加载到ImageView:
val imageUri = intent.getParcelableExtra<Uri>("extra_image_uri")
imageUri?.let {
    // 替换成你SecondActivity中的ImageView实例
    targetImageView.setImageURI(it)
}

二、图片偶尔加载错误的修复

图片预览异常多由Uri权限不足或异常未捕获导致,按以下优化:

  • 严格执行上述步骤中添加FLAG_GRANT_READ_URI_PERMISSION的操作,确保目标页面拥有图片读取权限;
  • 加载图片时添加异常捕获,避免崩溃并显示默认图:
try {
    selectedImageUri?.let { imageView.setImageURI(it) }
} catch (e: Exception) {
    e.printStackTrace()
    // 替换成你的默认图片资源
    imageView.setImageResource(R.drawable.default_img)
}
  • 每次选中新图片时,确保更新selectedImageUri并重新加载,避免复用旧Uri导致的异常。

内容的提问来源于stack exchange,提问作者CallB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:05:34