Pass custom class to Fragment
android, bundle, fragment
Solution
Bundles can accept custom classes, if they implement either `Parcelable` or `Serializable`, `Parcelable` is faster but more work to implement and `Serializable` is easier to implement, but slower.
Then you can do this:
Bundle bundle = new Bundle();
bundle.putSerializable("MyData", data);
fragment_one.setArguments(bundle);
Now `fragment_one` will have access to `data` in it's `onCreate(Bundle bundleHoldingData)` method.
Another option is to have a public setter in your fragment that takes in data. Benefit of this is you don't have to wait till data is ready to add the fragment.
Problem
I have a custom class called Data which contains all the data. The main activity creates two fragments. I have a field in the main activity like this: ``` private Data data = new Data(); ``` The fragments are created with this method: ``` private ArrayList<Fragment> getFragments() { ArrayList<Fragment> fragments = new ArrayList<Fragment>(); fragments.add(new fragment_one()); fragments.add(new fragment_two()); return fragments; } ``` I need to pass the data field to the fragments, so the fragments can acces the methods of Data. I tried by creating a bundle, but I can't pass a custom class. What can I do?