Niko Niko - 4 months ago 49
Android Question

Passing interface to Fragment

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
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 ");
        }
    }

    ...
}
Comments