GetSupportFragmentManager () kann nicht aus der Aktivität aufgerufen werden

79

Ich habe eine Aktivität, die ein Fragment hat.

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" />

Und ich möchte eine Methode von ResultFragment aus einer Methode in der Aktivität aufrufen, aber getSupportFragmentManager "existiert nicht":

FragmentManager fragMan = getSupportFragmentManager();

Wie kann ich das beheben?

Taru
quelle

Antworten:

189

Ihre Aktivität erweitert FragmentActivity nicht aus der Support-Bibliothek, daher ist die Methode in der Oberklasse nicht vorhanden

Wenn Sie auf API 11 oder höher abzielen, können Sie stattdessen Activity.getFragmentManager verwenden.

Robert Estivill
quelle
11
FragmentManagerist jetzt veraltet.
CoolMind
Nicht ganz richtig, Sie sollten den AndroidX FragmentManager verwenden.
ueen
1
Ich verwende ComponentActivity hier nicht AppcompactActivity und in componentActivity bekommt getsupportManger () einen Fehler anyiIdea
Sunil Chaudhary
56

Klasse erweitern auf AppCompatActivitystattActivity

Samad
quelle
18

Rufen Sie die aktuelle Aktivität vom übergeordneten Element ab und verwenden Sie dann diesen Code

getActivity().getSupportFragmentManager()

quelle
kann auch FragmentManager versuchen fragMan = getFragmentManager ();
MrPickles7
4

importieren

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
Sansalk
quelle
20
Der Import reicht hier nicht aus - Sie müssen auch von erben FragmentActivity.
Alexander Farber
4

Einfach benutzen

 FragmentManager fm = getActivity().getSupportFragmentManager();

Denken Sie immer daran, beim Zugriff auf Fragmente, die in MainLayout aufgeblasen werden, Casting oder zu verwenden getActivity().

Nitesh Rathod
quelle
3

verlängern FragementAvtivitystattActivity

Dileep krishnan
quelle
2

Das hat bei mir funktioniert. Ausführen der Android API 19 und höher.

FragmentManager fragMan = getFragmentManager();
Nic Parmee
quelle
1
getCurrentActivity().getFragmentManager()
Cesar Alonso
quelle
0

Anstatt

extends Fragment

verwenden

extends android.support.v4.app.Fragment 

Das funktioniert bei mir. für * API14 und höher

Beertoaster
quelle
-1

ich benutzte FragmentActivity

TabAdapter = new TabPagerAdapter(((FragmentActivity) getActivity()).getSupportFragmentManager());
pitu
quelle