I have a fragment activity, which has a fragment A. Fragment A does some important things in onViewCreated
method:
@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();
}
OK, now, this fragment A, has a button which creates a new fragment B, but I want to add a "back" button in the new Fragment B, so I added fragment A into backstack when launching Fragment 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();
And in Fragment B, I added this to back button onClick():
getFragmentManager().popBackStack();
The problem is that when I press back on Fragment B, onViewCreated method of Fragment A is being called, so my imageButtonList
array is getting a wrong amount of buttons inside because of the same buttons are being inserted again.
What would be the correct way to solve this issue? I thought that Fragment had similar behavior to Activities, where you can solve this issue putting the code that you don't want to execute two times in onCreate. But in this case, I can't do that because my views are not available in onCreate method of the fragment.