2014-11-18 14 views
14

A getParentFragment() dal mio frammento nidificato restituisce un null. Mi rendo conto che ottenere un null significa che il frammento è collegato all'attività e non al frammento del contenitore nidificato. Ma sto nidificando esplicitamente il frammento figlio all'interno del frammento genitore usando il bambino FragmentManager e quindi penso che non dovrei ottenere un null. Potresti dirmi cosa mi manca?Android: frammento padre di un frammento nidificato

Parent frammento

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

... 

} 

Bambino frammento

public class Filter extends Fragment { 

... 


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

... 

} 
+0

[Controlla questo] (http://stackoverflow.com/a/14804584/2591002) –

+0

@SweetWisher ツ, ho già. Non sta aiutando. Ho aggiornato la mia domanda con queste informazioni. –

+0

cosa dire di [questo] (http://stackoverflow.com/a/22501774/2591002) ?? e sei sicuro di ottenere * getParentFragment() * NULL ?? perché sembra che tu stia cercando di lanciare Fragment su un listener che lancia un'eccezione –

risposta

24

stavo chiamando getParentFragment() nel costruttore del frammento bambino e quindi prima il frammento bambino è stato completamente creato. Il passaggio da getParentFragment() a onCreateView() ha risolto il problema. Lo spostamento non era un problema, come stavo chiamando getParentFragment() per verificare se il frammento genitore avesse implementato un listener di interazione frammento figlio.