Tengo un código de cliente. Solo hay una actividad para todos los fragmentos, es decir, la única actividad es gestionar todos los fragmentos.
Esta actividad contiene el siguiente código para cualquier fragmento al final del método de ese fragmento:
Por ejemplo, fragmentar MoreFragment:
MoreFragment firstFragment = new MoreFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.article_fragment, firstFragment)
.addToBackStack(null).commit();
Entonces,
1) ¿Cuál es el significado de addToBackStack(null)
seguido de a commit()
?
2) ¿Por qué necesita pasar un parámetro nulo a addToBackStack
?
3) ¿Cómo obtener ese fragmento después de haber sido agregado así?
Parece que este código es inútil, ya que ejecuté el código sin la última línea .addToBackStack(null).commit()
y se ejecutó sin problemas.
android
android-fragments
Dios mío
fuente
fuente
Respuestas:
Citando documentos:
No importa el orden en el que agregue los cambios a FragmentTransaction, excepto:
Debe llamar en
commit()
último lugar. Si agrega varios fragmentos al mismo contenedor, el orden en el que los agrega determina el orden en que aparecen en la jerarquía de vistas.Así que tienes que comprometerte al final.
No es necesario que sea nulo, puede ser una cadena. Si no lo desea, simplemente pase null.
Sobre:
Si desea navegar al fragmento anterior, agréguelo al backstack. Por lo tanto, depende de si desea agregar el fragmento al backstack.
Ya tienes la instancia del fragmento
firstFragment
. Así que no sé a qué te refieres con obtener el fragmento más tarde.Más información @
http://developer.android.com/guide/components/fragments.html
http://developer.android.com/reference/android/app/FragmentTransaction.html#addToBackStack(java.lang.String)
fuente
getFragmentManager().popBackStackImmediate()
si el botón Atrás puede hacerlo solo con / sin el paso de parámetro? Vea la respuesta de - stackoverflow.com/questions/21156153/…La
tag
cadenaaddToBackStack(String name)
da una forma de ubicar la pila de respaldo para luego ir directamente a esa ubicación. Estaba destinado a ser utilizado en el métodopopToBackStack(String name, int flags)
:En otras palabras, abrirá su back stack hasta que encuentre el fragmento que fue agregado por
name
inaddToBackStack(String name)
.Por ejemplo, si realiza una serie de adiciones o reemplazos al administrador de fragmentos dando los nombres "frag1", "frag2", "frag3", "frag4" y luego desea volver directamente al fragmento 2 agregado con addToBackStack (" frag2 "), llamas
popToBackStack("frag2", 0)
.Entonces,
Utilice
.addToBackStack("fragName")
: si desea que más tardepopToBackStack(String name, int flags)
saque más de una pila.Uso
.addToBackStack(null)
: Si no quieres que aparezcan más de una pila posterior más tarde, pero aún así quieres sacar una a la vez. Haga esto incluso si no llama explícitamente a popToBackStack (), sino que deja que la implementación predeterminada de back press maneje la pila de actividades.Uso
.disallowAddToBackStack()
: Si no desea la tecla de retroceso, presione o llame a popBackStack () explícitamente. Se asegurará de que ninguna parte del código esté usando .addToBackStack ().fuente
Tus respuestas están desaprobadas. Si no desea agregar fragmentos a la pila de actividades, debe usar el siguiente fragmento de código:
A continuación tienes un lindo ejemplo de cómo usarlo:
fuente
disallowAddToBackStack
, cualquier llamada futura a addToBackStack arrojará IllegalStateException. Si ya se ha llamado a addToBackStack, este método arrojará IllegalStateException.