Passing interface to Fragment

Niko picture Niko · Apr 30, 2014 · Viewed 25.1k times · Source

Let's consider a case where I have Fragment A and Fragment B.

B declares:

public interface MyInterface {
    public void onTrigger(int position);
}

A implements this interface.

When pushing Fragment B into stack, how should I pass reference of Fragment A for it in Bundle so A can get the onTrigger callback when needed.

My use case scenario is that A has ListView with items and B has ViewPager with items. Both contain same items and when user goes from B -> A before popping B it should trigger the callback for A to update it's ListView position to match with B pager position.

Thanks.

Answer

Amit Gupta picture Amit Gupta · Apr 30, 2014
Passing interface to Fragment

I think you are communicating between two Fragment

In order to do so, you can have a look into Communicating with Other Fragments

public class FragmentB extends Fragment{
    MyInterface mCallback;

    // Container Activity must implement this interface
    public interface MyInterface {
        public void onTrigger();
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

        // This makes sure that the container activity has implemented
        // the callback interface. If not, it throws an exception
        try {
            mCallback = (MyInterface ) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement MyInterface ");
        }
    }

    ...
}