ฉันใช้ส่วนประกอบสถาปัตยกรรมการนำทางใหม่ใน 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());
}
}
});
ฉันลองใช้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