Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未调用onActivityResult(Kotlin)_Android_Kotlin_Onactivityresult - Fatal编程技术网

Android 未调用onActivityResult(Kotlin)

Android 未调用onActivityResult(Kotlin),android,kotlin,onactivityresult,Android,Kotlin,Onactivityresult,我需要帮助。在我的onCreate()上,我有以下代码: takePhotoDialog = DialogGetPhotoFrom.getInstance().apply { setListener(object : DialogGetPhotoFrom.DialogListener { override fun onTakeFromGallery() { Log.v("ProjectDetails", "onTak

我需要帮助。在我的
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()
在选择图像时不会激发。我该怎么办?

解决了!解决方案是将my 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)
}

该方法是活动的
onActivityResult
内部还是片段?在活动内部。反正我已经解决了解决方案是将onTakeFromGallery()中的代码放到Activity类中的另一个函数中,并在onTakeFromGallery()中调用该函数。我会发布我的解决方案。呵呵