getParentFragment devolviendo null
Tengo un Fragment
que tiene un FrameLayout
. Este primer fragmento (A) carga dentro de su marco otro fragmento (B). Cuando llamo getParentFragment
desde el fragmento interior (B), obtengo null
. ¿Cómo debe utilizarse correctamente este método?
4 answers
GetParentFragment() se introdujo en el nivel de API 17 (Android 4.2). Android 4.2 introdujo la idea de fragmentos anidados (fragmentos que contienen otros fragmentos). Llamar a esto resulta en null si el fragmento tiene un padre que es una Actividad.
Echa un vistazo a esto.
Si está utilizando la biblioteca de soporte, puede usar getParent (), puede ser que necesite usar getChildFragmentManager() mientras realiza la transacción de fragmentos. Ver esto
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-20 09:40:17
En mi caso, aunque mi fragmentA estaba anidado en FragmentB,todavía obtengo null después de llamar a getParentFragment en FragmentA. Finalmente descubrí que debería usar getChildFragmentManager en lugar de getFragmentManager en FragmentB.
Comprueba esto ¿Cuál es la diferencia entre getSupportFragmentManager() y getChildFragmentManager()?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:26
Me enfrenté al mismo problema , y solucioné los problemas alojando el segundo fragmento en tu fragmento padre con getChildFragmentManager()
entonces no obtendrás el valor nulo ...
Fragmento padre
SignUpFragment signUpFragment = new SignUpFragment();
getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.contentPanel, signUpFragment)
.addToBackStack(null).commit();
Fragmento hijo: lo que he usado es un diálogo
HospitalCardDialog hospitalCardDialog = new HospitalCardDialog();
hospitalCardDialog.show(getChildFragmentManager(), "");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-05 09:44:25
La única cosa que ayudó es, al crear el adaptador use getChildFragmentManager()
.
Si no está utilizando el adaptador, simplemente use getChildFragmentManager()
cuando realice transacciones.
setTargetFragment()
no se recomienda, ya que da errores en moveState()
del fragmento(porque los fragmentos deben estar vinculados a FragmentManager)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-21 04:07:28