No se puede llamar a getSupportFragmentManager () desde la actividad

79

Tengo una actividad que tiene un fragmento.

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

Y quiero llamar a un método de ResultFragment desde un método en la Actividad, pero getSupportFragmentManager "no existe":

FragmentManager fragMan = getSupportFragmentManager();

¿Cómo puedo resolver esto?

Taru
fuente

Respuestas:

189

Su actividad no extiende FragmentActivity de la biblioteca de soporte, por lo tanto, el método no está presente en la superclase

Si tiene como objetivo la api 11 o superior, puede usar Activity.getFragmentManager en su lugar.

Robert Estivill
fuente
11
FragmentManagerahora está en desuso.
CoolMind
No es del todo cierto, se supone que debes usar AndroidX FragmentManager.
ueen
1
Estoy usando ComponentActivity aquí, no AppcompactActivity y en componentActivity getsupportManger () está dando el error anyiIdea
Sunil Chaudhary
56

extender la clase a en AppCompatActivitylugar deActivity

Samad
fuente
18

obtener la actividad actual de los padres, luego usar este código

getActivity().getSupportFragmentManager()

fuente
también puede probar FragmentManager fragMan = getFragmentManager ();
MrPickles7
4

importar

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
sansalk
fuente
20
Importar no es suficiente aquí, también debe heredar FragmentActivity.
Alexander Farber
4

Simplemente use

 FragmentManager fm = getActivity().getSupportFragmentManager();

Recuerde siempre al acceder al inflado de fragmentos en MainLayout use Casting o getActivity().

Nitesh Rathod
fuente
3

extender en FragementAvtivitylugar deActivity

dileep krishnan
fuente
2

Esto funcionó para mí. Ejecutando la API de Android 19 y superior.

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

En vez de

extends Fragment

utilizar

extends android.support.v4.app.Fragment 

Esto funciona para mi. para * API14 y superior

Beertoaster
fuente
-1

solía FragmentActivity

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