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());
}
}
});
navigate () 에서 NavOptions 를 사용해 보았지만 뒤로 버튼이 여전히 나를 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
에 가장 잘 senario에 맞는 것을
popBackStack
또는 추가하지 마십시오LoginFragment
제공 가기 backstack하기null
로addToBackStack(null);
하고 새로 교체Fragment