按下按钮执行操作,而不是使用后退按钮

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
 }