我有一个片段活动,其中有一个片段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中添加一个“后退”按钮,所以我在启动片段B时将片段A添加到了后栈中。
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时,正在调用片段A的onViewCreated方法,因此我的imageButtonList
数组内部的按钮数量错误,因为再次插入了相同的按钮。
谁是解决此问题的正确方法?我认为Fragment的行为与Activity相似,在这里您可以解决此问题,将不想执行的代码放在onCreate中两次。但是在这种情况下,我无法执行此操作,因为该片段的onCreate方法中没有我的视图。
谢谢