Saya menggunakan Komponen Arsitektur Navigasi baru di android dan saya terjebak dalam membersihkan tumpukan navigasi setelah pindah ke fragmen baru.
Contoh: Saya berada di loginFragment dan saya ingin fragmen ini dihapus dari tumpukan saat saya menavigasi ke fragmen beranda sehingga pengguna tidak akan kembali ke loginFragment saat dia menekan tombol kembali.
Saya menggunakan NavHostFragment.findNavController (Fragment) .navigate (R.id.homeFragment) sederhana untuk menavigasi.
Kode Saat Ini:
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());
}
}
});
Saya mencoba menggunakan NavOptions di navigation () , tetapi tombol kembali masih mengirim saya kembali ke 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()
metode seperti navigate(int resId, Bundle args, NavOptions navOptions)
dan memberikan NavOptions
yang paling sesuai dengan senario Anda
popBackStack
atau tidak menambahkanLoginFragment
untuk backstack menyediakannull
untukaddToBackStack(null);
dan menggantinya dengan yang baruFragment