Ответ 1
Вы всегда должны добавлять, удалять и заменять свои фрагменты программно. Поэтому я предлагаю вам заменить фрагменты F-1, F-2 и F-3 на контейнеры, такие как FrameLayout.
В основном вместо того, чтобы иметь элемент <fragment/>
как F-1, вы делаете его элементом <FrameLayout/>
. Затем вы выполняете транзакцию фрагментов в своем FragmentActivity onCreate:
Fragment1 f1 = new Fragment1();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f1_container, f1); // f1_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Теперь предположим, что вы сделали это для F-1, F-2 и F-3. Затем вы заменяете f2 на f4, повторяя то же самое в своем OnClickListener
:
public void onClick(View v) {
Fragment4 f4 = new Fragment4();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f2_container, f4); // f2_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}