Estoy usando el nuevo componente de arquitectura de navegación en Android y estoy atascado en borrar la pila de navegación después de moverme a un nuevo fragmento.
Ejemplo: estoy en el loginFragment y quiero que este fragmento se borre de la pila cuando navegue al fragmento de inicio para que el usuario no vuelva al loginFragment cuando presione el botón Atrás.
Estoy usando un NavHostFragment.findNavController (Fragment) .navigate (R.id.homeFragment) simple para navegar.
Código actual:
mAuth.signInWithCredential(credential)
.addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
NavHostFragment.findNavController(LoginFragment.this).navigate(R.id.homeFragment);
} else {
Log.w(TAG, "signInWithCredential:failure", task.getException());
}
}
});
Intenté usar NavOptions en navigate () , pero el botón de retroceso todavía me envía de regreso al loginFragment
NavOptions.Builder navBuilder = new NavOptions.Builder();
NavOptions navOptions = navBuilder.setPopUpTo(R.id.homeFragment, false).build();
NavHostFragment.findNavController(LoginFragment.this).navigate(R.id.homeFragment, null, navOptions);
navigate()
método como navigate(int resId, Bundle args, NavOptions navOptions)
y proporcionar el NavOptions
que mejor se adapte a su senario
popBackStack
o no añadirLoginFragment
a backstack proporcionarnull
aaddToBackStack(null);
y sustituirla por nuevaFragment