Like I said, there are APIs on FragmentManager to put a Fragment pointer in
a Bundle and pull it out again, which work across state save/restore.

Though probably just as often, you can just use a tag name (or view ID) for
the fragment and later re-retrieve it when being created though
findFragmentByTag() and findFragmentById().

On Fri, Feb 18, 2011 at 9:22 AM, Satya Komatineni <
[email protected]> wrote:

> You say one can hold direct pointers (not just their references such
> as id and tag) to fragments of an activity.
>
> won't these pointers go stale across save/restore of either an
> activity or fragment?
>
> May be a "targetfragment" pointer may be retrofitted by the fragment
> manager (perhaps!!). How is this maintained across save/restore?
>
> how about the holding activity having an explicit pointer as a local
> variable of one of its child fragments? what about this pointer? as
> fragments go popping out of stack it is possible that the activity may
> hold on to each of these stacked fragments. (Ofcourse there is the
> find by tag or id of those in the current stack)
>
> I suspect these local pointers to other fragments may need to be
> explicitly managed through save/restore states??
>
> Thanks for helping us demystify a few things...
>
> Satya
>
> On Fri, Feb 18, 2011 at 1:13 AM, Dianne Hackborn <[email protected]>
> wrote:
> > No, actually, one of the big benefits of fragments is that they are *not*
> > sub-activities, they don't try to have a pretense of being isolated from
> > each other, and are designed to allow you to easily use direct pointers
> to
> > them.
> >
> > Don't try to impose "object oriented" because you feel like this somehow
> > magically makes things better.  Unless it serves a purpose, it doesn't.
> > Anyway there is a perfectly fine way to do these interactions that most
> > people will agree is object oriented and makes the code much simpler and
> > lighter weight: define a callback interface that one fragment (or
> activity)
> > implements and another can then call.
> > See for example the built-in facility for a fragment to have a pointer to
> a
> > target fragment.  This is the fragment version of activity's
> > onActivityResult().  However because fragments don't have a goal of
> imposing
> > a strict (remote-able) high-level interface to itself, sending results
> > between fragments is a lot easier: just define an interface of whatever
> > functionality you want, which the target fragment can implement, and the
> > sending can cast and call on.
> > You can also take advantage of the FragmentManager APIs to save a
> fragment
> > "pointer" in a bundle and later retrieve it, to allow you to maintain
> direct
> > pointers across state save/restore.
> > Basically, with fragments you'll want to unlearn a lot of the painful
> things
> > you got used to dealing with in embedded activities. :)
> > On Thu, Feb 17, 2011 at 8:10 PM, davemac <[email protected]> wrote:
> >>
> >> I'd love to hear opinions on the best way to communicate between
> >> fragments.
> >>
> >> If we consider that fragments are like sub-activities (a common
> >> metaphor), then we might think to use broadcast messages to tell one
> >> fragment about something that happened in another fragment. That seems
> >> a bit difficult though not impossible.
> >>
> >> The samples simply lookup one fragment from another then access views
> >> directly. This forces that fragment to understand what's going on
> >> around it, which doesn't feel as object-oriented as I'd like. I'd feel
> >> better if maybe the activity was doing that sort of coordination, so
> >> the fragment tells the activity, and the activity figures out which
> >> other fragment, if any, needs to get a message, then invokes a method
> >> on the fragment so it can perform any updates. Or the activity could
> >> decide we're in a situation where we need to fire up a separate
> >> activity. Or maybe move things around on the screen.
> >>
> >> Am I over-complicating things here? I realize that a mobile app should
> >> be as compact as possible, and if that means "just do it" and access
> >> views in other fragments directly, then I could go along with that.
> >> But I thought I'd ask the group to get some other opinions.
> >>
> >> - dave
> >>
> >> --
> >> You received this message because you are subscribed to the Google
> >> Groups "Android Developers" group.
> >> To post to this group, send email to
> [email protected]
> >> To unsubscribe from this group, send email to
> >> [email protected]
> >> For more options, visit this group at
> >> http://groups.google.com/group/android-developers?hl=en
> >
> >
> >
> > --
> > Dianne Hackborn
> > Android framework engineer
> > [email protected]
> >
> > 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 [email protected]
> > To unsubscribe from this group, send email to
> > [email protected]
> > For more options, visit this group at
> > http://groups.google.com/group/android-developers?hl=en
>
>
>
> --
> Satya Komatineni
> http://www.satyakomatineni.com
> http://www.androidbook.com
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
Dianne Hackborn
Android framework engineer
[email protected]

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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to