I have a problem with the "Onpause" method on my app. When i am in my ScanView activity and i press "back button" my app crash.
Here my clicklistener on my MainActivity.
btn!!.setOnClickListener {
val intent = Intent(this@MainActivity, ScanActivity::class.java)
//startActivity(intent)
startActivityForResult(intent,PICK_CONTACT_REQUEST)
}
Here my class ScanActivity
class ScanActivity : Activity(), ZXingScannerView.ResultHandler {
private var mScannerView: ZXingScannerView? = null
public override fun onCreate(state: Bundle?) {
super.onCreate(state)
mScannerView = ZXingScannerView(this) // Programmatically initialize the scanner view
setContentView(mScannerView) // Set the scanner view as the content view
}
public override fun onResume() {
super.onResume()
mScannerView!!.setResultHandler(this) // Register ourselves as a handler for scan results.
mScannerView!!.startCamera() // Start camera on resume
}
public override fun onPause() {
super.onPause()
mScannerView!!.stopCamera()
}
override fun handleResult(p0: com.google.zxing.Result?) {
val data = Intent()
data.putExtra("code", p0!!.text)
setResult(Activity.RESULT_OK, data)
finish()
mScannerView!!.resumeCameraPreview(this)
}
In my MainActivity the Onactivityresult
public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
if (requestCode == PICK_CONTACT_REQUEST) {
if (resultCode == Activity.RESULT_OK) {
val cb = data.getStringExtra("code")
println(cb)
tvresult.text = cb.toString()
}}
}
And finally the error code.
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {fr.tais.riocb/fr.tais.riocb.MainActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
at android.app.ActivityThread.deliverResults(ActivityThread.java:4268)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4312)
at android.app.ActivityThread.-wrap19(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1644)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
at fr.tais.riocb.MainActivity.onActivityResult(Unknown Source:2)
at android.app.Activity.dispatchActivityResult(Activity.java:7276)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4264)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4312)
at android.app.ActivityThread.-wrap19(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1644)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Have you an idea on my problem ?
Thanks
The problem is that your onActivityResult is claiming the data parameter must be non-null. Its actually null. I'd try to change your signature to make it nullable. If that doesn't work due to the fact its an override, make sure that your other acitivity always sets a result intent, even if the result is no answer.
There's nothing wrong with your onPause, its totally unrelated.