Sto usando il nuovo componente dell'architettura di navigazione in Android e sono bloccato nel cancellare lo stack di navigazione dopo essere passato a un nuovo frammento.
Esempio: sono nel loginFragment e desidero che questo frammento venga cancellato dallo stack quando passo al frammento home in modo che l'utente non venga restituito al loginFragment quando preme il pulsante Indietro.
Sto usando un semplice NavHostFragment.findNavController (Fragment) .navigate (R.id.homeFragment) per navigare.
Codice corrente:
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());
}
}
});
Ho provato a utilizzare le NavOptions in navigate () , ma il pulsante Indietro continua a rimandarmi al 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()
metodo come navigate(int resId, Bundle args, NavOptions navOptions)
e fornire quello NavOptions
che meglio si adatta al tuo senario
popBackStack
o non aggiungereLoginFragment
al backstack fornirenull
aaddToBackStack(null);
e sostituirlo con il nuovoFragment