web-dev-qa-db-fra.com

Android: Fragment parent d'un fragment imbriqué

Une getParentFragment() de mon fragment imbriqué renvoie un null. Je me rends compte que l'obtention d'un null signifie que le fragment est attaché à l'activité et non au fragment de conteneur imbriqué. Mais j'imbrique explicitement le fragment enfant à l'intérieur du fragment parent en utilisant l'enfant FragmentManager et pense donc que je ne devrais pas obtenir un null. Pourriez-vous me dire ce qui me manque?

Fragment parent

public class UsageBreakUp extends Fragment implements Filter.OnFragmentInteractionListener {

  ....

  @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        getChildFragmentManager().beginTransaction().add(R.id.filter, new Filter()).commit();
    }

...

}

Fragment enfant

public class Filter extends Fragment {

...


    public Filter() {
        if (getParentFragment() == null)
            Log.d(LOG_TAG, "parent fragment is null");
    }

...

}
21
Abhijith Madhav

J'appelais getParentFragment() dans le constructeur du fragment enfant et donc avant que le fragment enfant ne soit entièrement créé. Le déplacement de getParentFragment() vers onCreateView() a résolu le problème. Le décalage n'était pas un problème car j'appelais getParentFragment() pour vérifier si le fragment parent avait implémenté un écouteur d'interaction de fragment enfant.

37
Abhijith Madhav