Ich verwende die neue Navigationsarchitekturkomponente in Android und kann den Navigationsstapel nach dem Wechsel zu einem neuen Fragment nicht mehr löschen.
Beispiel: Ich bin im loginFragment und möchte, dass dieses Fragment vom Stapel gelöscht wird, wenn ich zum Home-Fragment navigiere, damit der Benutzer nicht zum loginFragment zurückkehrt, wenn er die Zurück-Taste drückt.
Ich verwende einen einfachen NavHostFragment.findNavController (Fragment) .navigate (R.id.homeFragment) zum Navigieren.
Aktueller Code:
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());
}
}
});
Ich habe versucht, die NavOptions in navig () zu verwenden , aber die Schaltfläche "Zurück" sendet mich immer noch zurück zum 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()
Methode wie verwenden navigate(int resId, Bundle args, NavOptions navOptions)
und NavOptions
diejenige bereitstellen, die am besten zu Ihrem Senario passt
popBackStack
oder fügen Sie nichtLoginFragment
bieten Backstacknull
aufaddToBackStack(null);
und ersetzen sie durch neueFragment