由于startActivityForResult()已贬值,如何从Android中的Kotlin画廊图像?

gorkyyrv  于 2022-11-16  发布在  Kotlin
关注(0)|答案(2)|浏览(141)

由于startActivityForResult()已贬值。如何从Android中的Kotlin画廊图像?

mspsb9vt

mspsb9vt1#

你可以使用registerForActivityResult来代替startActivityForResult。下面是我在Kotlin中从图库中获取图片的代码:

// class level
private val openGallery =
        registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
            if (it.resultCode == RESULT_OK) {
                binding.imgProfile.load(it.data?.data)
            }
        }

// in onViewCreated
imgProfile.setOnClickListener {
            val intent = Intent(Intent.ACTION_PICK)
            intent.setType("image/*")
            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
            openGallery.launch(intent)
        }
s1ag04yj

s1ag04yj2#

//在按钮上侦听器放置此代码

buttonPressed.setOnClickListener {
                val intent = Intent(Intent.ACTION_PICK)
                intent.type = "image/*"
                intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
                openGallery.launch(intent)            
        }

//在onCreate外部放置此代码

private val openGallery =     registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
            if (it.resultCode == RESULT_OK) {
                backgroundImage.setImageURI(it.data?.data)
            }
        }

相关问题