Evan Darwin
Evan Darwin

Reputation: 860

Program crashes when user presses back button while taking a picture

I'm using intents and I'm wondering why my application keeps crashing when they press the back button. I have tried:

if(data.getExtras() != null)

but that still doesn't work. Is there a more correct way to do this?

Oops, sorry for not being specific. D:

Stacktrace:

E/AndroidRuntime(19352): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1337, result=0, data=null} to activity {com.smilingdevil.Day5/com.smilingdevil.Day5.BopActivity}: java.lang.NullPointerException
E/AndroidRuntime(19352):        at android.app.ActivityThread.deliverResults(ActivityThread.java:2883)
E/AndroidRuntime(19352):        at android.app.ActivityThread.handleSendResult(ActivityThread.java:2925)
E/AndroidRuntime(19352):        at android.app.ActivityThread.access$2000(ActivityThread.java:132)
E/AndroidRuntime(19352):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1063)
E/AndroidRuntime(19352):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(19352):        at android.os.Looper.loop(Looper.java:143)
E/AndroidRuntime(19352):        at android.app.ActivityThread.main(ActivityThread.java:4196)
E/AndroidRuntime(19352):        at java.lang.reflect.Method.invokeNative(NativeMethod)
E/AndroidRuntime(19352):        at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(19352):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(19352):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(19352):        at dalvik.system.NativeStart.main(Native Method)

E/AndroidRuntime(19352): Caused by: java.lang.NullPointerException
E/AndroidRuntime(19352):        at com.smilingdevil.Day5.BopActivity.onActivityResult(BopActivity.java:167)
E/AndroidRuntime(19352):        at android.app.Activity.dispatchActivityResult(Activity.java:4010)
E/AndroidRuntime(19352):        at android.app.ActivityThread.deliverResults(ActivityThread.java:2879)
E/AndroidRuntime(19352):        ... 11 more
W/ActivityManager( 1337):   Force finishing activity com.smilingdevil.Day5/.BopActivity

Upvotes: 1

Views: 706

Answers (2)

Nick Campion
Nick Campion

Reputation: 10479

You're crashing because data is null. You need to do the check if(data != null && data.getExtras() != null). There is no guarantee that the activity that has finished has included any data as part of setting its result.

Upvotes: 1

Nate
Nate

Reputation: 16898

Are you handling the result of calling the camera intent with the onactivityResult(int requestCode, int resultCode, Intent data) method?

If so, make sure you're checking the resultCode -

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // first, check that your requestCode matches the requestCode you sent to the
    // camera intent - this should really only matter if you're making multiple 
    // requests to an intent and expecting to do different things with the returns,
    // but you should check anyway.
    if (requestCode == whateverCodeYouUsedInRequest) {
        if (resultCode == RESULT_OK) {
            // everything should be OK and you can process the expected result

        } else if (resultCode == RESULT_CANCELED) {
            // user explicitly canceled the called activity - you shouldn't 
            // expect to process the expected result.
        } else {
            // not sure what happened here - but result isn't 'RESULT_OK' so 
            // you shouldn't expect to process the expected result.
        }
    }
}

Upvotes: 1

Related Questions