【发布时间】:2019-10-11 20:58:48
【问题描述】:
我有一个片段活动,它有一个片段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 添加到 backstack 中:
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 具有与活动类似的行为,您可以在其中将不想执行两次的代码放在 onCreate 中解决此问题。但在这种情况下,我不能这样做,因为我的视图在片段的 onCreate 方法中不可用。
【问题讨论】:
标签: android android-fragments android-fragmentactivity fragment-backstack fragment-lifecycle