Как я могу использовать FragmentManager для отображения фрагмента A, B, C, ... в FrameLayout? - PullRequest
8 голосов
/ 17 октября 2011

Уважаемые люди из StackOverflow,

В настоящее время в моем приложении для Android есть одна большая проблема.

Я использую фрагменты для всех своих действий и читаю все документы здесь: http://developer.android.com/guide/topics/fundamentals/fragments.html

Мое приложение теперь выглядит очень круто на телефонах и планшетах.

Мой вопрос:

У меня есть макет, отображающий фрагменты, которые включены вa FrameLayout (см. скриншот внизу)

Итак, это скриншот с фрагментом A.

Теперь я хотел бы, нажав левую кнопку, заменить фрагмент A фрагментомB, или C, или ...

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment android:name="com.stackoverflow.question.FRAGMENT_A"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</FrameLayout>

Как вы можете видеть в моем xml, FRAGMENT_A жестко закодирован.

Представьте, что я хочу переключаться между 6 различными фрагментами, что я и делаю?Поместите все мои 6 фрагментов в XML, или есть способ программно заменить FRAGMENT_A на FRAGMENT_B, C, D, E и т. Д.

Большое спасибо за вашу помощь.

enter image description here

1 Ответ

14 голосов
/ 17 октября 2011

используйте FragmentTransaction для замены фрагментов.

вы можете сделать замену фрагментов программно.

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
FragmentB fb = new FragmentB();
ft.replace(R.id.list, fb);
ft.addToBackStack("replacingFragmentA");
ft.commit();

добавить в задний стек необязательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...