我已经实现了以下图片:
我有一些选项卡,每个选项卡可能都有一些加载不同片段的按钮。在这种情况下,在标签1 中,按钮1 加载片段1 ,并且按钮2 加载片段2 ,并且每次都会重新创建片段。但我希望Button只能加载一次片段,并避免下次重新创建。
按钮1 当前onClick:
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container_root, FragmentOne.newInstance(),"Frag1");
transaction.commit();
如何保存片段状态以避免每次都重新加载?
标签1 和标签2 片段位于ViewPager内,因此我无法将ViewPager用于片段1 和片段2 。
答案 0 :(得分:0)
您可以使用viewpager创建标签
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setOffscreenPageLimit(tabsNumber - 1); // e.g. send 2 as parameter for 3 tabs
并保存您的标签状态
答案 1 :(得分:0)
使用以下代码
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.add(R.id.container_root, FragmentOne.newInstance(),"Frag1");
transaction.addToBackStack("Frag1");
transaction.commit();
代替
FragmentTransaction transaction =
getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container_root, FragmentOne.newInstance(),"Frag1");
transaction.commit();
问题:
您正在尝试通过 FragmentTransaction 添加片段时替换它们。如果需要保留它们的实例,则需要使用 transaction.add 方法。
警告:
使用此方法可以重叠片段。因此,您需要为两个片段都添加backgroundcolor,并使父布局可点击,以便您可以进行交互