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?

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.


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


18

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

getActivity().getSupportFragmentManager()

kann auch FragmentManager versuchen fragMan = getFragmentManager ();
— MrPickles7

4

importieren

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

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().



2

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

FragmentManager fragMan = getFragmentManager();


0

Anstatt

extends Fragment

verwenden

extends android.support.v4.app.Fragment 

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


-1

ich benutzte FragmentActivity

TabAdapter = new TabPagerAdapter(((FragmentActivity) getActivity()).getSupportFragmentManager());
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.