web-dev-qa-db-fra.com

Échec de la livraison du résultat sur le résultat de l'activité

Ci-dessous, un exemple d'intention de code de la caméra:

val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    startActivityForResult(intent, REQUEST_CAMERA)

Remarque: lorsque j'appuie sur la caméra, le résultat sur le résultat de l'activité s'affiche comme ceci:

Java.lang.RuntimeException: échec de livraison du résultat ResultInfo {who = null, request = 65537, result = 0, data = null} à l'activité et provoqué par: Java.lang.IllegalArgumentException: le paramètre spécifié comme non nul est nul:

Essayez de sortir une solution comme celle-ci:

 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { 
           try {
                when(resultCode){
                    Activity.RESULT_CANCELED -> {
                        System.out.println("nothing")
                    }
                    Activity.RESULT_OK -> {
                        if (requestCode == SELECT_FILE)
                            onSelectFromGalleryResult(data)
                        else if (requestCode == REQUEST_CAMERA)
                            onCaptureImageResult(data)
                    }
                }
            }catch (e:NullPointerException){
                e.printStackTrace()
            }
}

toujours pas résoudre le problème parce que quand je fais le journal de débogage, il ne sort pas sur func onactivityresult si je vais appuyer sur retour de la caméra et ne pas capturer l'image. Prendre des photos et ramasser des images de la galerie fonctionne comme un charme.

Je vous remercie. S'il vous plaît, aidez-moi à résoudre ce problème car, en cours de route, la solution ne fonctionne pas. Il semble que google doive passer outre le plaisir de la réactivité (resultcode !!: Int) <- celui-ci devrait avoir renvoyé non null.

13
Mohd Hafiz

Ne devriez-vous pas remplacer cela à la place?

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
    }
26
NSimon

J'obtenais le même problème lors de la mise en œuvre de la passerelle de paiement Paypal dans mon application en utilisant le kotlin. Vous avez juste besoin d'ajouter ? avec Intent dans onActivityResult car les données peuvent être nulles si les données sont nulles ou quelque chose ne va pas. Nous devons donc définir les données comme nullables dans onActivityResult

Remplacez simplement onActivityResult la signature de votre SomeActivity par ci-dessous:

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