拍照后出现 "The following declarations have the same JVM signature" 错误,如何在 kotlin 上设置 onActivityResult?

How to set onActivityResulton kotlin after taking picture with "The following declarations have the same JVM signature" error?

我正在尝试在从本地文件拍摄或附加照片后在 kotlin class 上设置 onActivityResult。 java 代码工作正常

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CameraService.REQUEST_IMAGE_CAPTURE) {
        if (resultCode == Activity.RESULT_OK) {
            photoList.add(mPhotoFile.toString());
        }
    }else{
        if (resultCode == Activity.RESULT_OK) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();
            photoList.add(picturePath);
        }
    }
}

但是在 kotlin class 上,相同的代码块给我一个错误“以下声明具有相同的 JVM 签名”

这是科特林代码

private fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
        if (requestCode == CameraService.REQUEST_IMAGE_CAPTURE) {
            if (resultCode == Activity.RESULT_OK) {
                photoList.add(mPhotoFile.toString())
            }
        } else {
            if (resultCode == Activity.RESULT_OK) {
                val selectedImage = data.data
                val filePathColumn = arrayOf(MediaStore.Images.Media.DATA)
                val cursor = contentResolver.query(selectedImage, filePathColumn, null, null, null)
                cursor.moveToFirst()
                val columnIndex = cursor.getColumnIndex(filePathColumn[0])
                val picturePath = cursor.getString(columnIndex)
                cursor.close()
                photoList.add(picturePath)
            }
        }
    }

错误是

任何帮助或建议都将非常感谢

您应该像这样更改您的代码

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
        if (requestCode == CameraService.REQUEST_IMAGE_CAPTURE) {
            if (resultCode == Activity.RESULT_OK) {
                photoList.add(mPhotoFile.toString())
            }
        } else {
            if (resultCode == Activity.RESULT_OK) {
                val selectedImage = data.data
                val filePathColumn = arrayOf(MediaStore.Images.Media.DATA)
                val cursor = contentResolver.query(selectedImage, filePathColumn, null, null, null)
                cursor.moveToFirst()
                val columnIndex = cursor.getColumnIndex(filePathColumn[0])
                val picturePath = cursor.getString(columnIndex)
                cursor.close()
                photoList.add(picturePath)
            }
        }
    }

片段onActivityResult方法中,data参数可以为空,所以必须使用data: Intent?:

private fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    // your code here
}