web-dev-qa-db-ja.com

アクティビティの結果に結果を提供できません

以下は、カメラからのサンプルコードの意図です。

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

注:アクティビティの結果の結果としてカメラから押し戻すと、次のように表示されます。

Java.lang.RuntimeException:結果ResultInfo {who = null、request = 65537、result = 0、data = null}をアクティビティに配信できず、原因:Java.lang.IllegalArgumentException:非nullとして指定されたパラメーターがnullです:

このような解決策を出してみてください:

 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()
            }
}

それでも問題を解決しないのは、デバッグログを実行するときに、カメラから戻って画像をキャプチャしないと、ログがfunc onactivityresultに表示されないためです。ギャラリーから写真やピックアップ画像を撮ることは魅力のように動作します。

ありがとうございました。与えられた方法で解決策が機能しないので、私がこの問題を解決するのを助けてください。グーグルは楽しいonresultactivity(resultcode !!:Int)をオーバーライドする必要があるようです---これはnull以外を返す必要があります。

13
Mohd Hafiz

代わりにこれをオーバーライドしてはいけませんか?

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

Kotlinを使用してアプリにPaypal支払いゲートウェイを実装しているときにも同じ問題が発生しました。 onActivityResultにIntentを指定してを追加するだけで、データがnullであるか何かがうまくいかない場合、データがnullになる可能性があります。したがって、onActivityResultでデータをnull許容として定義する必要があります

SomeActivityのonActivityResult署名を以下で置き換えるだけです:

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