3 つのフラグメントがあるアプリケーションでナビゲーション フローを作成しています。これが完全なシナリオです。
- フラグメント A (OTP を取得)
- フラグメント B (OTP を確認)
- フラグメント C (パスワードの変更)
ユーザー ナビゲーションはフラグメント A から開始します。ユーザーはユーザー名と OTP を取得するための要件を入力します。XML レイアウトにフラグメント A を追加しました。
フラグメント B が動的に追加され、addToBackStack("fragmentB") も追加されました。そのため、戻るボタンをクリックすると popupbackstack が正常に動作します。
検証の確認により、ユーザーはフラグメント C (パスワードの変更) 画面に移動します。ユーザーが [戻る] をクリックすると、ユーザーは最初の画面に移動し、フラグメント B をスキップする必要があります。ポップバックしません。
以下は、フラグメント B と C をそれぞれ追加および置換するためのコードです。
public void addConfirmOtpView(){
ConfirmOTPFragment confirmOtpFragment = new ConfirmOTPFragment();
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.add(R.id.containerLayout, confirmOtpFragment, confirmOtpFragment.getClass().getSimpleName());
mFragmentTransaction.addToBackStack(confirmOtpFragment.getClass().getSimpleName());
mFragmentTransaction.commit();
}
public void replaceResetPasswordFragment() {
ResetPasswordFragment resetPassword = new ResetPasswordFragment();
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.containerLayout, resetPassword);
mFragmentTransaction.commit();
}
編集:
@Override
public void onBackPressed() {
if (mFragmentManager != null && mFragmentManager.getBackStackEntryCount() != 0){
mFragmentManager.popBackStack();
}else {
super.onBackPressed();
}
}