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 NavOptions
qui correspond le mieux à votre senario
popBackStack
ou ne pas ajouterLoginFragment
à backstack fournirnull
àaddToBackStack(null);
la remplacer par une nouvelleFragment