以下は、カメラからのサンプルコードの意図です。
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以外を返す必要があります。
代わりにこれをオーバーライドしてはいけませんか?
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
}
Kotlinを使用してアプリにPaypal支払いゲートウェイを実装しているときにも同じ問題が発生しました。 onActivityResult
にIntentを指定して?を追加するだけで、データがnullであるか何かがうまくいかない場合、データがnullになる可能性があります。したがって、onActivityResult
でデータをnull許容として定義する必要があります
SomeActivityのonActivityResult
署名を以下で置き換えるだけです:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)