tutorial studio implement how getsupportfragmentmanager fragments example dinamicos container android android-fragments android-support-library android-fragmentactivity fragmentmanager

android - studio - ¿Cómo puedo acceder a getSupportFragmentManager() en un fragmento?



getsupportfragmentmanager in fragment (13)

Tengo FragmentActivity y quiero usar un fragmento de mapa dentro de él. Tengo problemas para obtener el administrador de fragmentos de soporte para acceder a él.

if (googleMap == null) { googleMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map1)).getMap(); // check if map is created successfully or not if (googleMap == null) { Toast.makeText(getApplicationContext(), "Sorry! unable to create maps", Toast.LENGTH_SHORT) .show(); } } // create marker MarkerOptions marker = new MarkerOptions().position( new LatLng(latitude, longitude)).title("Hello Maps "); CameraPosition cameraPosition = new CameraPosition.Builder() .target(new LatLng(latitude, longitude)).zoom(15).build(); googleMap.animateCamera(CameraUpdateFactory .newCameraPosition(cameraPosition)); // adding marker googleMap.addMarker(marker);


El siguiente código es el truco para mí

SupportMapFragment mapFragment = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)); mapFragment.getMapAsync(this);


Los usuarios de Kotlin prueban esta respuesta

(activity as AppCompatActivity).supportFragmentManager


Mi actividad principal extiende AppCompatActivity, así que tuve que convertir mi contexto en AppCompatActivity en lugar de solo Activity.

p.ej.

FragmentAddProduct fragmentAddProduct = FragmentAddProduct.newInstance(); FragmentTransaction fragmentTransaction = ((AppCompatActivity)mcontext).getSupportFragmentManager().beginTransaction();


Prueba esto:

private SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getActivity().getSupportFragmentManager());


Puede usar getActivity().getSupportFragmentManager() cada vez que desee obtenerSupportFragmentManager.

jerarquía es Actividad -> fragmento. fragmento no es capaz de llamar directamente a getSupportFragmentManger, pero la actividad puede. Por lo tanto, puede usar getActivity para llamar a la actividad actual en la que se encuentra el fragmento y obtener getSupportFragmentManager()


Puedes llamar directamente

getFragmentManager()

para obtener el administrador de fragmentos

o

En tu fragmento,

Crear campo:

private FragmentActivity myContext;

anula el método Attack de tu fragmento:

@Override public void onAttach(Activity activity) { myContext=(FragmentActivity) activity; super.onAttach(activity); }

Cuando necesite obtener la llamada del administrador de fragmentos de soporte:

FragmentManager fragManager = myContext.getSupportFragmentManager(); //If using fragments from support v4

o

FragmentManager fragManager = myContext.getFragmentManager();

Estás listo.


Simplemente puede acceder como

Context mContext; public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { mContext = getActivity(); }

y luego usa

FragmentManager fm = ((FragmentActivity) mContext) .getSupportFragmentManager();


Simplemente tómalo así -

getFragmentManager() // This will also give you the SupportFragmentManager or FragmentManager based on which Fragment class you have extended - android.support.v4.app.Fragment OR android.app.Fragment.

O

getActivity().getSupportFragmentManager();

en el método onActivityCreated () de tu Fragment y en cualquier método al que se llame después de onActivityCreated ().


Todo lo que necesitas hacer es usar

getFragmentManager()

método en tu fragmento. Le dará el administrador de fragmentos de soporte, cuando lo usó al agregar este fragmento.

Documentación de fragmentos


haz esto en tu fragmento

getActivity().getSupportFragmentManager()


si tienes este problema y estás en el nivel 21+ de la API, haz esto:

map = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)) .getMap();

esto obtendrá el mapa cuando se usa dentro de un fragmento.


getActivity().getFragmentManager() Esto funcionó o yo.

También eche un vistazo here.


getSupportFragmentManager() usado cuando estás en actividad y quieres obtener un fragmento, pero en el fragmento puedes acceder

getSupportFragmentManager()

mediante el uso de otro método llamado getFragmentMangaer() funciona igual que getSupportFragmentManager() y puede usarlo como solía hacerlo:

fragmentTransaction =getFragmentManager().beginTransaction();