Passing an Object from an Activity to a Fragment
android
Solution
Create a static method in the `Fragment` and then get it using `getArguments()`.
Example:
public class CommentsFragment extends Fragment {
private static final String DESCRIBABLE_KEY = "describable_key";
private Describable mDescribable;
public static CommentsFragment newInstance(Describable describable) {
CommentsFragment fragment = new CommentsFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(DESCRIBABLE_KEY, describable);
fragment.setArguments(bundle);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
mDescribable = (Describable) getArguments().getSerializable(
DESCRIBABLE_KEY);
// The rest of your code
}
You can afterwards call it from the `Activity` doing something like:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment fragment = CommentsFragment.newInstance(mDescribable);
ft.replace(R.id.comments_fragment, fragment);
ft.commit();
Problem
I have an `Activity` which uses a `Fragment`. I simply want to pass an object from this `Activity` to the `Fragment`. How could I do it? All the tutorials I've seen so far where retrieving data from resources. EDIT : Let's be a bit more precise: My Activity has a `ListView` on the left part. When you click on it, the idea is to load a `Fragment` on the right part. When I enter this `Activity`, an Object `Category` is given through the `Intent`. This Object contains a List of other Objects `Questions` (which contains a List of String). These `Questions` objects are displayed on the ListView. When I click on one item from the `ListView`, I want to display the List of `String` into the `Fragment` (into a `ListView`). To do that, I call the `setContentView()` from my `Activity` with a layout. In this layout is defined the `Fragment` with the correct class to call. When I call this `setContentView()`, the `onCreateView()` of my `Fragment` is called but at this time, the `getArguments()` returns null. How could I manage to have it filled before the call of `onCreateView()` ? (tell me if I'm not clear enough) Thanks