Tôi đang sử dụng Thành phần kiến trúc điều hướng mới trong android và tôi gặp khó khăn trong việc xóa ngăn xếp điều hướng sau khi chuyển sang một phân đoạn mới.
Ví dụ: Tôi đang ở trong loginFragment và tôi muốn phân đoạn này bị xóa khỏi ngăn xếp khi tôi điều hướng đến phân đoạn chính để người dùng sẽ không bị quay lại loginFragment khi anh ta nhấn nút quay lại.
Tôi đang sử dụng NavHostFragment.findNavController (Fragment) .navigate (R.id.homeFragment) đơn giản để điều hướng.
Mã hiện tại:
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());
}
}
});
Tôi đã thử sử dụng NavOptions trong điều hướng () , nhưng nút quay lại vẫn đưa tôi trở lại 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()
phương pháp như navigate(int resId, Bundle args, NavOptions navOptions)
và cung cấp loại NavOptions
phù hợp nhất với senario của bạn
popBackStack
hoặc không thêmLoginFragment
để backstack cung cấpnull
đếnaddToBackStack(null);
và thay thế bằng mớiFragment