Я использую новый компонент архитектуры навигации в Android, и я застрял в очистке стека навигации после перехода к новому фрагменту.
Пример: я нахожусь в loginFragment и хочу, чтобы этот фрагмент был удален из стека при переходе к домашнему фрагменту, чтобы пользователь не вернулся обратно в loginFragment, когда он нажмет кнопку "Назад".
Я использую простой NavHostFragment.findNavController(Fragment).navigate(R.id.homeFragment) для навигации.
Текущий код:
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());
}
}
});
Я пытался использовать NavOptions в navigate(), но кнопка "Назад" по-прежнему отправляет меня обратно в 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);