按下按钮执行操作,而不是使用后退按钮
Press a button to execute an operation instead of using back button
我正在从图库中选择一张图片。
当我按下后退按钮时,会调用 getResultCamera.launch(intent)
并进行操作。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_selected_image)
image = findViewById(R.id.the_selected_image);
srButton = findViewById(R.id.super_resolution_button)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
val permissions = arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE)
requestPermissions(permissions, PERMISSION_CODE)
} else {
chooseImageGallery()
}
} else {
chooseImageGallery()
}
}
private fun chooseImageGallery() {
val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
getResultCamera.launch(intent)
}
private val getResultCamera =
registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) {
if (it.resultCode == Activity.RESULT_OK) {
imageUri = it.data?.data as Uri
image.setImageURI(imageUri)
intent.putExtra("imageuri", imageUri)
}
}
因此,它转到 MainActivity
,加载图像并在那里进行操作。
现在,我想使用一个按钮供用户按下而不是后退按钮。
所以,我正在尝试类似的方法:
private val getResultCamera =
registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) {
if (it.resultCode == Activity.RESULT_OK) {
imageUri = it.data?.data as Uri
image.setImageURI(imageUri)
srButton.setOnClickListener { view: View ->
intent.putExtra("imageuri", imageUri)
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
}
}
但是当我按下按钮时,它只是 returns 到 MainActivity
而没有执行操作。
尝试将 finish()
放入按钮的 OnClickListener 中。这基本上就像用户按下后退按钮一样。
请试试这个方法可能对你有帮助
private val pickImages = registerForActivityResult(ActivityResultContracts.GetContent()){ uri: Uri? ->
uri?.let { it ->
// The image was saved into the given Uri -> do something with it
imageUri = it
}
}
pickImages.launch("image/*")
srButton.setOnClickListener { view: View ->
intent.putExtra("imageuri", imageUri)
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
@Override
protected void onBackPressed(){
//Do not call super.onbackpressed here
}
我正在从图库中选择一张图片。
当我按下后退按钮时,会调用 getResultCamera.launch(intent)
并进行操作。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_selected_image)
image = findViewById(R.id.the_selected_image);
srButton = findViewById(R.id.super_resolution_button)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
val permissions = arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE)
requestPermissions(permissions, PERMISSION_CODE)
} else {
chooseImageGallery()
}
} else {
chooseImageGallery()
}
}
private fun chooseImageGallery() {
val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
getResultCamera.launch(intent)
}
private val getResultCamera =
registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) {
if (it.resultCode == Activity.RESULT_OK) {
imageUri = it.data?.data as Uri
image.setImageURI(imageUri)
intent.putExtra("imageuri", imageUri)
}
}
因此,它转到 MainActivity
,加载图像并在那里进行操作。
现在,我想使用一个按钮供用户按下而不是后退按钮。
所以,我正在尝试类似的方法:
private val getResultCamera =
registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) {
if (it.resultCode == Activity.RESULT_OK) {
imageUri = it.data?.data as Uri
image.setImageURI(imageUri)
srButton.setOnClickListener { view: View ->
intent.putExtra("imageuri", imageUri)
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
}
}
但是当我按下按钮时,它只是 returns 到 MainActivity
而没有执行操作。
尝试将 finish()
放入按钮的 OnClickListener 中。这基本上就像用户按下后退按钮一样。
请试试这个方法可能对你有帮助
private val pickImages = registerForActivityResult(ActivityResultContracts.GetContent()){ uri: Uri? ->
uri?.let { it ->
// The image was saved into the given Uri -> do something with it
imageUri = it
}
}
pickImages.launch("image/*")
srButton.setOnClickListener { view: View ->
intent.putExtra("imageuri", imageUri)
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
@Override
protected void onBackPressed(){
//Do not call super.onbackpressed here
}