我在Activity上,在那里,我调用本地存储库。
fun selectGallery() {
val readPermission = ContextCompat.checkSelfPermission(
this,
Manifest.permission.READ_EXTERNAL_STORAGE
)
// 권한 확인
if (readPermission == PackageManager.PERMISSION_DENIED) {
// 권한 요청
ActivityCompat.requestPermissions(
this,
arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE
),
100
)
} else {
var intent = Intent(Intent.ACTION_PICK)
intent.data = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
intent.type = "image/*"
startActivityForResult(intent, 2000)
}
}
binding.editAvatar.setOnClickListener {
selectGallery()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
2000 -> {
// 사진 가져오기
selectedAvatarURI = data?.data!!
Glide.with(this)
.load(selectedAvatarURI)
.into(binding.avatarImage)
editFillClass.avatarFill.value = true
}
}
}
所以这段代码运行良好。
当我点击一个按钮时,本地图库屏幕打开。
但是,如果我按下返回键,应用程序就会被杀死。
奇怪的是,同样的代码在另一个Fragment
中使用。
在那里,即使我按下返回键,应用程序也不会关闭。
返回到前一个片段页。
为什么会发生这种情况,我如何才能使画廊屏幕关闭时,我按下后退按钮?
您需要检查结果,最有可能的data
是空的:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
2000 -> {
// 사진 가져오기
selectedAvatarURI = data?.data
if (selectedAvatarURI != null) {
Glide.with(this)
.load(selectedAvatarURI)
.into(binding.avatarImage)
editFillClass.avatarFill.value = true
}
}
}
}