onActivityResult不叫(Kotlin)

我需要帮助。 在我的onCreate()我有这样的代码:

  takePhotoDialog = DialogGetPhotoFrom.getInstance().apply { setListener(object : DialogGetPhotoFrom.DialogListener { override fun onTakeFromGallery() { Log.v("ProjectDetails", "onTakeFromGallery called") val intent = Intent().apply { type = "image/*" action = Intent.ACTION_GET_CONTENT } startActivityForResult(Intent.createChooser(intent, "Select Image"), REQUEST_PICK_IMAGE) } override fun onTakePhoto() { dispatchTakePictureIntent() } }) } projectDetails_pickImage.setOnClickListener { takePhotoDialog?.show(supportFragmentManager) } 

关于我的onActivityResult ,我写道:

 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) when (requestCode) { REQUEST_PICK_IMAGE -> { Log.v("ProjectDetails", "REQUEST_PICK_IMAGE called") if (resultCode == Activity.RESULT_OK) { if (data != null) { try { val inputStream = contentResolver.openInputStream(data.data) val bitMap = BitmapFactory.decodeStream(inputStream) projectDetails_image.setImageBitmap(bitMap) // TODO Save image URI to database } catch (e: Exception) { Toast.makeText(this, "Can't set background.", Toast.LENGTH_SHORT).show() } } else { Log.v("ProjectDetails", "data is null") } } } } } 

问题是,选择图像时, onActivityResult()不会触发。 我该怎么办?

解决了! 解决方案是将我的onTakeGallery()函数中的代码放到属于Activity类的函数中。 所以我的代码如下所示:

 takePhotoDialog = DialogGetPhotoFrom.getInstance().apply { setListener(object : DialogGetPhotoFrom.DialogListener { override fun onTakeFromGallery() { dispatchSelectFromGalleryIntent() } override fun onTakePhoto() { dispatchTakePictureIntent() } }) } projectDetails_pickImage.setOnClickListener { takePhotoDialog?.show(supportFragmentManager) } 

提取的代码在这里:

 private fun dispatchSelectFromGalleryIntent() { val intent = Intent().apply { type = "image/*" action = Intent.ACTION_GET_CONTENT } startActivityForResult(Intent.createChooser(intent, "Select Image"), REQUEST_PICK_IMAGE) }