#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. Не знаете, почему? Я пытаюсь сделать это так, чтобы мне не нужно было делать один и тот же макет несколько раз.