Добавление фрагмента в контейнеры с тем же идентификатором

StackOverflow https://stackoverflow.com//questions/24018845

Вопрос

У меня есть 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top