Has this issue been fixed? The bug report on the issue tracker says it's closed, but there are new comments from people having this issue. I am also having this issue. I might be doing it wrong though, since I can't get it to work with any request code.
On Thursday, March 10, 2011 12:15:12 PM UTC-6, Dianne Hackborn wrote: > > Whoops, yeah that is a bug. Thanks for finding it. I'll fix it in the > next update. > > On Thu, Mar 10, 2011 at 1:55 AM, Pete Doyle wrote: > >> Ran into this issue tonight on my Droid (2.2). I think there's an issue >> in FragmentActivity.startActivityFromFragment(...). >> >> YMMV, but this seems to fix it for me: >> >> https://github.com/petedoyle/android-support-v4-googlemaps/commit/06307de35a9de0a89ff52bb42a358ba6740e542c >> >> Basically there are two issues: >> 1) "(fragment.mIndex+1)<<16" should be in parentheses since + has >> precedence over << in Java >> 2) requestCode*0xffff should be requestCode&0xffff. (I think the goal >> is to strip all but the first 16 bits of the request code). >> >> To understand the fix, assume you have a fragment index of 0 and a >> requestCode of 1. >> >> With the current code: >> (fragment.mIndex+1)<<16 + (requestCode*0xffff) >> = (0+1)<<16 + (1*0xFFFF) >> = (1)<< (16 + 0xFFFF) // since + has precedence over << >> = 1<<65551 >> = 32768 // according to my debugger >> = 1000 0000 0000 0000 // fragment index is lost, request code changes >> from 1 to 32768 >> >> With this change: >> ((fragment.mIndex+1)<<16) + (requestCode&0xffff) >> = ((0+1)<<16) + (1&0xFFFF) >> = (1<<16) + 1 >> = 65536 + 1 >> = 65537 >> = 1 0000 0000 0000 0001 >> >> Thanks, >> Pete >> >> On Wed, Mar 9, 2011 at 9:20 AM, Dianne Hackborn <hack...@android.com>wrote: >> >>> Does the API demo for this work wherever you are running it? I have >>> tested it on 3.0, 2.3, and 1.6, and it works in those places, not would I >>> expect it to have any trouble elsewhere. (How this works is very simple, >>> it just masks out the top X bits of the request code to determine which >>> fragment to deliver the result to.) >>> >>> Also of course if you are overriding >>> FragmentActivity.onActivityResult(), you *do* need to be sure to call the >>> inherited version. The behavior here is slightly different than the HC >>> implementation; the activity method will always be called first. >>> >>> >>> On Wed, Mar 9, 2011 at 8:14 AM, drasticp <drast...@gmail.com> wrote: >>> >>>> I have an application that targets 2.1. I'm using the Android >>>> Compatibility Package to migrate the code in my Activities to >>>> Fragments. I had an Activity which was launching a contact picker as >>>> follows: >>>> >>>> Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, >>>> Contacts.CONTENT_URI); >>>> startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT); >>>> >>>> The result was appropriately handled in the onActivityResult for the >>>> Activity: >>>> >>>> @Override >>>> public void onActivityResult(int requestCode, int resultCode, Intent >>>> data) { >>>> if (resultCode != Activity.RESULT_OK) return; >>>> switch (requestCode) { >>>> case CONTACT_PICKER_RESULT: >>>> handleResult(data); >>>> break; >>>> } >>>> } >>>> >>>> Now, I've migrated both the startActivityForResult call and the >>>> onActivityResult into a Fragment. I have also extended >>>> FragmentActivity in the hosting Activity. >>>> >>>> The contact picker still launches correctly, but onActivityResult in >>>> the fragment is never called. If I override onActivityResult in the >>>> FragmentActivity, it *IS* called. However, I don't want to handle the >>>> result there because it breaks the encapsulation philosophy of the new >>>> fragments. >>>> >>>> Shouldn't onActivityResult in the fragment be called? Am I missing >>>> something? Thanks for your assistance! >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Android Developers" group. >>>> To post to this group, send email to >>>> android-developers@googlegroups.com >>>> To unsubscribe from this group, send email to >>>> android-developers+unsubscr...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/android-developers?hl=en >>>> >>> >>> >>> >>> -- >>> Dianne Hackborn >>> Android framework engineer >>> hack...@android.com >>> >>> Note: please don't send private questions to me, as I don't have time to >>> provide private support, and so won't reply to such e-mails. All such >>> questions should be posted on public forums, where I and others can see and >>> answer them. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Android Developers" group. >>> To post to this group, send email to android-developers@googlegroups.com >>> To unsubscribe from this group, send email to >>> android-developers+unsubscr...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/android-developers?hl=en >>> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Android Developers" group. >> To post to this group, send email to android-developers@googlegroups.com >> To unsubscribe from this group, send email to >> android-developers+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/android-developers?hl=en >> > > > > -- > Dianne Hackborn > Android framework engineer > hack...@android.com > > Note: please don't send private questions to me, as I don't have time to > provide private support, and so won't reply to such e-mails. All such > questions should be posted on public forums, where I and others can see and > answer them. > > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en