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
ます
popBackStack
か追加していないLoginFragment
提供backstackすることnull
にaddToBackStack(null);
して、新しいと交換Fragment