Hello,
I have a problem with the Android framework for which I'm not able to find
any ideal design solution.
I have an activity that contains multiple fragments, all those fragments
need to access the same model object. This model object can be loaded from
a memory cache, ContentProvider or network, depending on a bunch of
parameters. I wanted to use a Loader to load that model object, so that it
doesn't have to be loaded again when the activity is recreated, and it can
be observed if it changes.
All my fragments don't really have a purpose without the model object
loaded, as they don't have any data to display.
Here are the options I considered:
*#1: Have the activity initialize the loader in its onCreate() method, and
add the fragments to the activity when the model finishes loading: *
*Problem:* It is unsafe to make fragment transactions in a callback
method, because the activity state might be paused, according
to
http://developer.android.com/reference/android/app/LoaderManager.LoaderCallbacks.html#onLoadFinished(android.content.Loader<D>,
D)
*#2: Have the activity initialize the loader and add the fragments in its
onCreate() method, and call a custom method on the fragment to set the
model*
*Problem:* I cannot use the recommended setArguments() method to set
the data on the fragment, which means that if my fragment is re-created by
the system, it won't have a reference to the model anymore
*#3: Have the activity initialize the loader and add the fragments in its
onCreate() method, and have the fragments access the model through the
activity*
*Problem*: The fragments won't know whether or not the model is loaded
in the activity, and if I add a method on the fragment for the activity to
let it know, I'll have the same problem as #2
*#4: Have all my fragments initialize a loader independently and load the
data on their own.*
*Problem:* That's really inefficient, especially if the model needs to
be loaded from the network
I'm kind of thinking now that I could do something like #3, and having an
additional call in my fragments' onResume() that checks whether or not the
model is set in the activity to set its state, but that seems hacky...
Is there a cleaner way of doing this?
Thanks!
--
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
---
You received this message because you are subscribed to the Google Groups
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.