onActivityResult resultCode 给出了反之亦然的结果

Posted

技术标签:

【中文标题】onActivityResult resultCode 给出了反之亦然的结果【英文标题】:onActivityResult resultCode is giving vise versa result 【发布时间】:2019-02-02 19:55:04 【问题描述】:

我正在使用默认的 android Image Capture 意图,但我遇到了问题。这是我的代码

 fun onCameraClick(): View.OnClickListener 
        return View.OnClickListener 
            val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)

            if (intent.resolveActivity(dialog.context.packageManager) != null) 
                var photoFile: File? = null

                try 
                    photoFile = dialog.context.createImageFile()
                 catch (e: IOException) 
                    Timber.e(e)
                

                photoFile?.let 
                    val photoURI = FileProvider.getUriForFile(
                            dialog.context,
                            "$dialog.context.packageName.fileprovider",
                            it
                    )
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI)
                    generalBottomSheetDialogFragment?.startActivityForResult(intent, CAMERA_REQUEST_CODE)
                
            
        
    

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

        when (requestCode) 
            CAMERA_REQUEST_CODE -> 

                when 
                    requestCode == -1 -> 

                    
                    requestCode == RESULT_CODE_OK -> 

                    
                    else -> 

                    
                

            
            PDF_REQUEST_CODE ->
                data?.also 
                    generalResponse.setElement(it)
                    dialog.dismiss()
                
        


    

我的问题是,当我成功拍照时,resultCode 将是 -1,当我从相机按回来时,我得到了 RESULT_CODE_OK。谁能帮我看看为什么会这样?我没看到什么?

【问题讨论】:

【参考方案1】:

根本原因:因为你的代码不正确

解决方案:更改您的代码

来自

when 
    requestCode == -1 -> 

    
    requestCode == RESULT_CODE_OK -> 

    
    else -> 

    

when 
    resultCode == Activity.RESULT_OK -> 

    
    resultCode == Activity.RESULT_CANCELED -> 

    
    else -> 

    

【讨论】:

以上是关于onActivityResult resultCode 给出了反之亦然的结果的主要内容,如果未能解决你的问题,请参考以下文章

onActivityResult() 在 Android 上不起作用

AppCompatActivity 不推荐使用 onActivityResult()

反应本机 onActivityResult 不起作用

片段中未调用 onActivityResult

Android基础:startActivityForResult 和 onActivityResult 问题

启动相机意图时未调用 onActivityResult?