usarlo studio sola samsung rapido programacion porque muy mucha marca llega descarga consume celular bien bateria baja apaga android android-fragments

android - studio - Cómo volver a abrir la pila para la actividad con múltiples fragmentos?



porque la bateria de mi celular samsung se baja rapido (2)

Supongamos que tengo una Actividad que contiene dos FrameLayouts (llamémosles FrameA y FrameB) que a su vez contienen un Fragmento (llamémoslos FragmentA1 y FragmentB1 respectivamente). Ahora, realizo una serie de transacciones de fragmentos individuales usando un código similar al siguiente ...

getFragmentManager() .beginTransaction() .replace(frameId, fragment) .addToBackStack(null) .commit();

... tal que reemplace FragmentA1 en FrameA con FragmentA2, luego reemplazo FragmentB1 en FrameB con FragmentB2, luego reemplazo FragmentA2 en FrameA con FragmentA3, luego reemplazo FragmentB2 en Frame2 con FragmentB3, y el estado final se parece a la imagen de arriba ( donde solo FragmentA3 y FragmentB3 son visibles).

Si comprendí correctamente cómo funciona la pila trasera, al presionar ''atrás'' intercalaré la aparición de los Fragmentos entre FrameA y FrameB (lo que refleja cómo los agregué).

¿Alguien sabe si es posible abrir la última transacción en FrameA o FrameB selectivamente? (es decir, si presioné ''Pop FrameA'' entonces FrameA pasaría de FragmentA3 a FragmentA2 y, en cambio, si presioné ''Pop FrameB'' entonces FrameB pasaría de FragmentB3 a FragmentB2)

Suplemento: Sé que puedo obtener el Fragmento agregado por última vez a un FrameLayout determinado utilizando el método FragmentManager.findFragmentById(int framelayoutId) , pero al llamar a FragmentTransaction.remove(fragment).commit() solo se elimina el Fragmento de la Vista y no se realiza la transición. Ver de nuevo al Fragmento que se mostró anteriormente.


Básicamente, no, solo hay una pila de respaldo para una actividad.

Simplemente deberá implementar sus propios backstacks separados.

A partir de Android 4.0 (y la biblioteca de soporte asociada) hay API que deberían hacer que esto sea relativamente fácil: FragmentTransaction.detach(Fragment) te permite poner un fragmento en el mismo estado que está cuando está en la pila de respaldo, y FragmentManager.saveFragmentInstanceState(Fragment) te permite ir más lejos y tirar por completo el objeto Fragmento. No es coincidencia, estos se utilizan para implementar FragmentPagerAdapter de ViewPager y FragmentStatePagerAdapter, respectivamente, por lo que puede ver el código de estos como un ejemplo de cómo usarlos.