J'utilise le nouveau composant d'architecture de navigation dans Android et je suis bloqué dans l'effacement de la pile de navigation après avoir migré vers un nouveau fragment.
Exemple: je suis dans le loginFragment et je veux que ce fragment soit effacé de la pile lorsque je navigue vers le fragment d'accueil afin que l'utilisateur ne soit pas renvoyé au loginFragment lorsqu'il appuie sur le bouton Précédent.
J'utilise un simple NavHostFragment.findNavController (Fragment) .navigate (R.id.homeFragment) pour naviguer.
Code actuel:
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());
}
}
});
J'ai essayé d'utiliser les options de navigation dans le navigateur () , mais le bouton de retour me renvoie toujours à la connexionFragment
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éthode comme navigate(int resId, Bundle args, NavOptions navOptions)et fournir celle NavOptionsqui correspond le mieux à votre senario

popBackStackou ne pas ajouterLoginFragmentà backstack fournirnullàaddToBackStack(null);la remplacer par une nouvelleFragment