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ć?

Taru
źródło

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 .

Robert Estivill
źródło
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
56

rozszerz klasę na AppCompatActivityzamiastActivity

Samad
źródło
18

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

getActivity().getSupportFragmentManager()

źródło
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;
sansalk
źródło
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().

Nitesh Rathod
źródło
3

rozszerzyć FragementAvtivityzamiastActivity

dileep krishnan
źródło
2

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

FragmentManager fragMan = getFragmentManager();
Nic Parmee
źródło
1
getCurrentActivity().getFragmentManager()
Cesar Alonso
źródło
0

Zamiast

extends Fragment

posługiwać się

extends android.support.v4.app.Fragment 

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

Beertoaster
źródło
-1

użyłem FragmentActivity

TabAdapter = new TabPagerAdapter(((FragmentActivity) getActivity()).getSupportFragmentManager());
pitu
źródło