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);