在 ImageView 中使用 setImageURI 函数时应用程序崩溃

问题描述

我正在打开图库并在选择图像时获取图像的 URI。然后我像这样使用 setimageURI 显示图片

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

    if (resultCode == Activity.RESULT_OK && requestCode == ACTION_CAMERA_REQUEST_CODE){
        val uri: Uri? = data?.data
        imageUri = uri.toString()
        show_iv.setimageURI(Uri.parse(imageUri)) // handle chosen image
    }
} 

它在我的 imageView (show_iv) 中显示了正确的图像。 但是,当我保存 URI 然后再次打开文件显示该图像时,应用程序崩溃了。

override fun onPause() {
    super.onPause()
    val title = et_title.text.toString()
    if (title.length == 0) {
        Toast.makeText(this,"The note can not be saved when the title be blank",Toast.LENGTH_LONG).show();
    } else {
        if (imageUri == null)
        {
            fp.addNote(et_title.getText().toString(),et_body.getText().toString() + "img:" + "null",!isTitleExist(title))
        }
        else 
        {
            fp.addNote(et_title.getText().toString(),et_body.getText().toString() + "img:" + imageUri,!isTitleExist(title));
        }
    }
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_noteeditor)

    et_title = findViewById(R.id.et_title);
    et_body = findViewById(R.id.et_body);

    //        add picture
    val btn_addphoto: Button = findViewById(R.id.btn_addphoto)
    btn_addphoto.setonClickListener{add_photo()}


    show_iv = findViewById(R.id.show_iv)
    show_iv.setimageResource(R.drawable.galleryicon)


    val intent = getIntent()
    val notepos = intent.getIntExtra("NOTEPOS",-1)

    fp = FileProcessor(this,MainActivity.EXTERNAL)
    titlelist = fp.getNoteList()

    if (notepos != -1) {
        var title = titlelist[notepos]
        et_title.setText(title)
        title = title + ".txt"
        val content = fp.readFile(title)
        val (newContent,scanUri) = content.split("img:")
        et_body.setText(newContent)
        imageUri = scanUri
        if (imageUri == "null")
            show_iv.setimageURI(null)
        else
            show_iv.setimageURI(Uri.parse(imageUri))

    } else {
        et_title.setText("")
        et_body.setText("")
    }
}

我用同样的方式来显示图片,并检查了两种情况下的URI是否相同。它是如何发生的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)