问题
I am building a tab interface using Action bar and fragment. I would need assistance in sending data from container activity to the fragment.
To elaborate, I have job object in container activty. And I have created few tabs based on the information in job object (like company details, experience details etc). I need to pass the job object to these fragments so that it can display respective information.
I have created container activity and tab fragments. I would need an example on how to pass the object across them. I cannot use intent.putExtra. Can I access parent container's object from fragment?
Any help shall be appreciated.
Thanks.
回答1:
Make the method in your activity, e.g getJob
that will return the Job
object and its information
MyActivity extends Activity{
Job mJob;
public Job getJob(){
return this.mJob;
}
}
then in your Fragment you do this:
MyFragment extends Fragment{
@Override
public void onActivityCreated(){
super.onActivityCreated();
((MyActivity)this.getActivity()).getJob();
}
}
use getActivity
and the method getJob();
to get the object
回答2:
There are multiple ways of achieving this.
- Make a
static
variable to hold your data and access that data from inside the fragments - this is the most fast but it creates bad design patterns if used improperly. - A way of
Fragment-to-Fragment communication possible through the parent Activity
is posted here: http://developer.android.com/training/basics/fragments/communicating.html You can use the sample code to just do aActivity - Fragment data send
. - The top voted answer here: Accessing instance of the parent activity? mentions
a way to avoid using static data
(1.) and contains source code examples usingActivityGroup
"If you need access to some values in your First activity without making a static reference to it, you could consider putting your activities in an ActivityGroup."
What you choose is your preference, these are just a few options!
Edit: I'm not sure if number 3 will work with fragments since I haven't tested a method similar to it, the example is Activity - Activity communication.
来源:https://stackoverflow.com/questions/13759546/android-accessing-container-activity-object-from-fragment-using-putextra