На планшете у нас есть два фрагмента (два разных представления одних и тех же данных), которые сидят рядом друг с другом. На мобильных устройствах мы хотели бы переключаться между этими двумя фрагментами одним нажатием кнопки. Мобильный макет выглядит примерно так:
<RelativeLayout>
<fragment id="container" name="fragA"/>
<ImageButton onClick="swapFragments" />
</RelativeLayout>
В методе действия swapFragments(View)
я пытаюсь использовать FragmentManager
для замены fragA
на fragB
:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, new FragB());
fragmentTransaction.commit();
... но я всегда могу видеть fragA
сквозь прозрачные части fragB
, что наводит меня на мысль, что он просто ставит fragB
поверх fragA
, а не заменяет его.
Я начинаю по пути использования hide(Fragment)
и подобных методов в транзакции, но это не похоже на правильный способ сделать это.
Какие-нибудь советы о том, как правильно поменять эти фрагменты?
Редактировать : Я видел ответ на на этот вопрос . Это смущает меня, так как мне нужно иметь возможность указать другое расположение для планшета и телефона. Если мне нужно программно добавлять фрагменты, как мне избежать кода, специфичного для каждого макета в упражнении (т. Е.
if(TABLET) {
addFragmentA();
addFragmentB();
} else {
addFragmentA();
}