Re: [android-developers] Fragment.onActivityResult is not called
OK! I solved my problem. Teaches me to code when tired. I was simply missing a .show() after my toast. :(
On Thursday, April 26, 2012 6:21:03 PM UTC-5, Casvah wrote:
Ok, I'll verify I have the current version of the compatibility library. If it is fixed, what would cause my fragment's onActivityResult callback method to never be called?--
On Thursday, April 26, 2012 4:42:41 AM UTC-5, Kostya Vasilyev wrote:The bug is in the compatibility library, not the platform, so no firmware updates are involved.The native platform implementation of this is different.It appears fixed in the current version of the compat library (v7?), I believe it has been for a long time.-- K26 апреля 2012 г. 6:32 пользователь Zsolt Vasvari <zvasvari@gmail.com> написал:Oh, I see this is from 2011, not this March. Never mind -- the fix should certainly be part of 3.2 and ICS.
On Thursday, April 26, 2012 10:09:38 AM UTC+8, Zsolt Vasvari wrote:I am sure it will be fixed in whatever the next version of Android is and if they back port the fix and the phones get updated (likelihood: 0.0001%).--So unless you are targeting ONLY the non-yet public next version of the SDK, you might as well just not even assume this fix exists and code around it somehow.
On Thursday, April 26, 2012 9:24:59 AM UTC+8, Casvah wrote: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: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 0001Thanks,Pete
On Wed, Mar 9, 2011 at 9:20 AM, Dianne Hackborn <hackbod@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 <drasticp@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+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
Dianne Hackborn
Android framework engineer
hackbod@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+unsubscribe@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+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--
Dianne Hackborn
Android framework engineer
hackbod@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+unsubscribe@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+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home