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

Original source