У меня есть фрагмент активности, который имеет фрагмент A. Фрагмент A делает некоторые важные вещи в методе onViewCreated
:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mission1 = view.findViewById(R.id.mission1);
mission2 = view.findViewById(R.id.mission2);
mission3a = view.findViewById(R.id.mission3a);
mission3b = view.findViewById(R.id.mission3b);
imageButtonList.add(mission1);
imageButtonList.add(mission2);
imageButtonList.add(mission3a);
imageButtonList.add(mission3b);
prepareButtons();
}
ОК, теперь этот фрагмент A имеет кнопку, которая создаетновый фрагмент B, но я хочу добавить кнопку «назад» в новый фрагмент B, поэтому я добавил фрагмент A в backstack при запуске фрагмента B:
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
CampaignMissionFragment fragment = CampaignMissionFragment.newInstance(auxMission);
ft.replace(R.id.fragmentContainer, fragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();
А во фрагменте B я добавил это вкнопка возврата onClick ():
getFragmentManager().popBackStack();
Проблема заключается в том, что при повторном нажатии на фрагмент B вызывается метод onViewCreated для фрагмента A, поэтому мой массив imageButtonList
получает неверное количество кнопок внутрииз-за того же кнопки вставляются снова.
Как правильно решить эту проблему? Я думал, что Fragment имеет поведение, подобное действиям, где вы можете решить эту проблему, поместив код, который вы не хотите выполнять два раза, в onCreate. Но в этом случае я не могу этого сделать, потому что мои представления недоступны в методе onCreate фрагмента.
Спасибо