将Fragment添加到具有相同ID的容器中
-
21-12-2019 - |
题
我有一个 ViewPager 来实现“持有者”片段之间的滑动。在它们内部,我需要将多个片段添加到各自的容器中。
问题是,我正在使用 FragmentTransaction.add(containerID, fragment);
, ,但由于 ViewPager 中有多个持有者片段,因此所有片段都会添加到同一个持有者片段中,而不是添加到调用添加它们的片段中。
任何人都知道解决这个问题的好做法吗?
这是我在支架片段中添加片段的代码。
arrayFragments = new ArrayList<DiaAgendaFragment>();
DiaAgendaFragment objFragment;
FragmentManager fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
//this will be set accordingly later for each fragment
Time dataFragment = new Time();
dataFragment.setToNow();
//instantiate and set fragments
for (int i = 0; i < 5; i++) {
objFragment = DiaAgendaFragment.newInstance(5, dataFragment);
arrayFragments.add(objFragment);
//pega a View pelo nome e adiciona o fragment
transaction.add(getActivity().getResources().getIdentifier("agenda5d_activity_fragment"+i, "id", getActivity().getPackageName()), arrayFragments.get(i));
//codigo de teste
dataFragment.monthDay += 1;
}
transaction.commit();
解决方案
你必须利用孩子 FragmentManager
如果你想添加 Fragments
到另一个 Fragment
. 。使用正常的 FragmentManager
正如您自己发现的那样,不会起作用。
在你的 Fragment
:
FragmentManager manager = getChildFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
...
transaction.commit();
不隶属于 StackOverflow