Estou usando o novo componente de arquitetura de navegação no Android e estou preso em limpar a pilha de navegação depois de mover para um novo fragmento.
Exemplo: estou no loginFragment e quero que este fragmento seja apagado da pilha quando navego para o fragmento inicial, para que o usuário não seja retornado ao loginFragment quando pressionar o botão Voltar.
Estou usando um NavHostFragment.findNavController (Fragment) .navigate (R.id.homeFragment) simples para navegar.
Código Atual:
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());
}
}
});
Tentei usar o NavOptions no navegador () , mas o botão Voltar ainda está me enviando de volta para o 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)
e fornecer o NavOptions
que melhor se ajusta ao seu senário
popBackStack
ou não adicionarLoginFragment
a backstack fornecernull
paraaddToBackStack(null);
e substituí-lo com o novoFragment