Передача объекта с сериализуемым в другой фрагмент

#java #android

Вопрос:

Я пытаюсь передать объект из одного фрагмента в другой, вот так:

  @Override
public void onClickAddBeneficiary() {
    navController.navigate(R.id.action_nonRegBeneficiaryList_to_addEditNonRegBeneficiaryFragment);
}
@Override
public void onClickEdit(Beneficitary beneficitary) {
    benefitiayModelId = beneficitary.getId();
    Bundle args = new Bundle();
    args.putSerializable("passedBeneficiaryModel",beneficitary);
    navController.navigate(R.id.action_nonRegBeneficiaryList_to_addEditNonRegBeneficiaryFragment,args);
}
 

поэтому, если пользователь нажмет для редактирования, он должен передать объект, который следует отредактировать, и если он нажмет n, добавьте, что переданный объект отсутствует, и он должен быть равен нулю. В другом фрагменте в onCreate() я делаю это:

 if (getArguments() != null)
        beneficiaryModel = (Beneficitary) getArguments().getSerializable("passedBeneficiaryModel");
    navController = NavHostFragment.findNavController(this);

    if (beneficiaryModel == null) {
        binding.createDailyItemTV.setText("Add Non Registered Investment Beneficiary");
    } else {
        binding.createDailyItemTV.setText("Edit Non Registered Investment Beneficiary");
    }
 

и если он не равен нулю, я должен установить текст в качестве редактирования… и если он равен нулю, то добавьте…
а затем на моем onCLick:

  @Override
public void onClickAddBeneficiary(Beneficitary model) {
    if (model == null) {
        Toast.makeText(requireContext(), "fill all fields", Toast.LENGTH_SHORT).show();
        return;
    }
    if (beneficiaryModel == null) {
        navController.getPreviousBackStackEntry().getSavedStateHandle().set("addedBeneficiaryModel", model);
    } else{
        navController.getPreviousBackStackEntry().getSavedStateHandle().set("editedBeneficiaryModel", model);
    }

    navController.popBackStack();
}
 

В первый раз все работает нормально. Но во второй раз, если я перейду от редактирования к добавлению или наоборот, сначала оператор if/else работает нормально, но при нажатии он запоминает мое предыдущее состояние и запускает ту же часть оператора if/else. Не знаете, почему? Я пытаюсь сделать это так, чтобы мне не нужно было делать один и тот же макет несколько раз.