2014-11-18 15 views
14

A getParentFragment() z mojego zagnieżdżonego fragmentu zwraca null. Zdaję sobie sprawę, że uzyskanie null oznacza, że ​​fragment jest dołączony do działania, a nie do zagnieżdżonego fragmentu kontenera. Ale jawnie zagnieżdżam fragment potomny wewnątrz fragmentu rodzica, używając dziecko FragmentManager i dlatego myślę, że nie powinienem dostawać null. Czy możesz mi powiedzieć, czego mi brakuje?Android: Fragment rodzica zagnieżdżonego fragmentu

fragment nadrzędna

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

... 

} 

Dziecko fragment

public class Filter extends Fragment { 

... 


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

... 

} 
+0

[Sprawdź to] (http://stackoverflow.com/a/14804584/2591002) –

+0

@SweetWisher ツ, Mam już. To nie pomaga. Zaktualizowałem moje pytanie tymi informacjami. –

+0

co z [tym] (http://stackoverflow.com/a/22501774/2591002)? i czy na pewno otrzymujesz * getParentFragment() * NULL ?? ponieważ wydaje się, że próbujesz rzucić Fragment do słuchacza, który rzuca wyjątek –

Odpowiedz

24

byłem nazywając getParentFragment() w konstruktorze fragmencie dziecka, a tym samym przed fragment dziecko został całkowicie stworzony. Przesunięcie getParentFragment() do onCreateView() rozwiązało problem. Przesuwanie nie było problemem, ponieważ dzwoniłem pod numer getParentFragment(), aby sprawdzić, czy fragment macierzysty zaimplementował detektor interakcji z elementami potomnymi.

Powiązane problemy