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.