How to recreate a listener passed to DialogFragment after orientation change?

android

Solution

Why not use the `Fragment#setTargetFragment` method. Like so

public class Fragment1 extends Fragment {
    ...
    public void createFragment2(){
        final Fragment dialogFragment = new MyDialogFragment();
        dialogFragment.setTargetFragment(this);
        dialogFragment.show();
    }
}


public class Fragment2 extends DialogFragment{
    ...
    public void onEvent(){
        ((Fragment1)getTargetFragment()).onEvent();
    }
}

Problem

I have a `DialogFragment` which do some work by means of `listener` which I pass to it on its creation. Listener is a `Fragment` instance which implements required interface. Everything is fine but on orientation change everything is recreating and I'm missing `listener`, so just bumping into `NullPointeException`. How to handle this situation? Should I just close the `DialogFragment` if orientation change happens? I don't think users will like this behavior. So I need to recreate a `listener`... but how?

Original source

Related problems