Я використовую новий компонент навігаційної архітектури в 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);
navigate()
методом navigate(int resId, Bundle args, NavOptions navOptions)
і надати той, NavOptions
що найкраще відповідає вашому сенаріо
popBackStack
або не додаватиLoginFragment
в backstack забезпечити ,null
щобaddToBackStack(null);
і замінити його новимFragment