Wrong requestCode in onActivityResult

Dimanoid picture Dimanoid · May 12, 2012 · Viewed 66.3k times · Source

I'm starting a new Activity from my Fragment with

startActivityForResult(intent, 1);

and want to handle the result in the Fragment's parent Activity:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d(TAG, "onActivityResult, requestCode: " + requestCode + ", resultCode: " + resultCode);
    if (requestCode == 1) {
        // bla bla bla
    }
}

The problem is that I never got the requestCode I've just posted to startActivityForResult().

I got something like 0x40001, 0x20001 etc. with a random higher bit set. The docs don't say anything about this. Any ideas?

Answer

Changwei Yao picture Changwei Yao · May 12, 2012

You are calling startActivityForResult() from your Fragment. When you do this, the requestCode is changed by the Activity that owns the Fragment.

If you want to get the correct resultCode in your activity try this:

Change:

startActivityForResult(intent, 1);

To:

getActivity().startActivityForResult(intent, 1);