studio popbackstackimmediate fragments example backstack addtobackstack android back-stack

android - popbackstackimmediate - onbackpressed fragment



Cómo hacer estallar el fragmento del backstack (3)

Tengo una actividad A, que llama fragmento Bf, que llama fragmento Cf. Quiero que Bf se coloque en el backstack cuando se llama Cf para que los usuarios puedan volver a él. Sin embargo, si se presiona un botón específico en Cf, me gustaría que Bf se elimine del backstack. es posible?

Veo que hay una función popBackStack (). Sin embargo, estoy un poco confundido sobre cómo funcionaría esto. ¿Es seguro usar esta función? ¿Existe alguna posibilidad de que una actividad de una aplicación diferente se inserte después de Bf en el backstack?

Además, ¿hay alguna forma de alterar el estado de la instancia guardada del fragmento en el backstack?

Simplemente no puedo averiguar cómo hacer una prueba robusta en el backstack usando el emulador.


Puedes hacer estallar el fragmento por nombre. Mientras agregas fragmentos a la pila trasera, solo dales un nombre.

fragmentTransaction.addToBackStack("fragB"); fragmentTransaction.addToBackStack("fragC");

Luego, en Fragment_C, fragB la pila trasera utilizando el nombre, es decir, fragB e incluya POP_BACK_STACK_INCLUSIVE

someButtonInC.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentManager fm = getActivity() .getSupportFragmentManager(); fm.popBackStack ("fragB", FragmentManager.POP_BACK_STACK_INCLUSIVE); } });


Tres maneras de hacer estallar un fragmento de BackStack

  1. Simplemente agregue esta línea

    getActivity().getSupportFragmentManager().popBackStack();

2. #

getActivity().getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

3. #

getActivity().getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

Es toda una manera fácil de hacer estallar el fragmento de la espalda


primero reemplazando el fragmento container_view esa vez agregamos un nombre como "Transacción posterior"

getSupportFragmentManager().beginTransaction().replace(R.id.container_view, profileFragment, "Profile").addToBackStack("Later Transaction").commit();

luego, en la parte posterior, presione el botón para abrir la pila posterior utilizando el nombre de Transacción posterior

int count = getSupportFragmentManager().getBackStackEntryCount(); if(count > 1) { getSupportFragmentManager().popBackStack("Later Transaction", FragmentManager.POP_BACK_STACK_INCLUSIVE); } else { DialogUtils.show(HomeActivity.this, getString(R.string.exit_app_message), getString(R.string.alert), "Yes","No", new DialogUtils.ActionListner() { @Override public void onPositiveAction() { finish(); } @Override public void onNegativeAction() { } }); }