Nie można wywołać getSupportFragmentManager () z działania


79

Mam działanie, które ma fragment.

XML:

 <fragment android:name="com.example.androidcalculator.ResultFragment"
            android:id="@+id/result_fragment"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

I chcę wywołać metodę z ResultFragment z metody w Activity, ale getSupportFragmentManager „nie istnieje”:

FragmentManager fragMan = getSupportFragmentManager();

Jak mogę to rozwiązać?

Odpowiedzi:


189

Twoja aktywność nie rozszerza FragmentActivity z biblioteki obsługi, dlatego metoda nie jest obecna w nadklasie

Jeśli celujesz w interfejs API 11 lub nowszy, możesz zamiast tego użyć Activity.getFragmentManager .


11
FragmentManagerjest teraz przestarzała.
CoolMind,

Nie do końca prawda, powinieneś użyć AndroidX FragmentManager.
1919

1
Używam tutaj ComponentActivity, a nie AppcompactActivity, aw module componentActivity getsupportManger () daje błąd anyiIdea
Sunil Chaudhary


18

pobierz bieżącą aktywność od rodzica, a następnie użyj tego kodu

getActivity().getSupportFragmentManager()

można również wypróbować FragmentManager fragMan = getFragmentManager ();
MrPickles 7

4

import

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;

20
Importowanie tu nie wystarczy - też musisz dziedziczyć FragmentActivity.
Alexander Farber,

4

Po prostu użyj

 FragmentManager fm = getActivity().getSupportFragmentManager();

Pamiętaj zawsze, gdy uzyskujesz dostęp do wypełniania fragmentów w MainLayout, użyj Casting lub getActivity().



2

To zadziałało dla mnie. Z systemem Android API 19 lub nowszym.

FragmentManager fragMan = getFragmentManager();


0

Zamiast

extends Fragment

posługiwać się

extends android.support.v4.app.Fragment 

To działa dla mnie. dla * API14 i nowszych


-1

użyłem FragmentActivity

TabAdapter = new TabPagerAdapter(((FragmentActivity) getActivity()).getSupportFragmentManager());
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.