У меня есть необходимость заменить один исходный фрагмент (я назову его A) с двумя другими фрагментами (B и C в «обычном» списке + конфигурации зрителя). В настоящее время у меня есть относительное расположение с двумя макетов кадров выступает в качестве заполнителя для B и C:Два фрагмента вместо одного
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RadioGroup
android:id="@+id/radiogroup_navigation"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<!-- Some radiobuttons (not displayed for the sake of brevity) -->
</RadioGroup>
<FrameLayout
android:id="@+id/frame_list"
android:layout_width="100dp"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_below="@id/radiogroup_navigation">
</FrameLayout>
<FrameLayout
android:id="@+id/frame_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_below="@id/radiogroup_navigation"
android:layout_toRightOf="@id/frame_list">
</FrameLayout>
Когда мне нужно отобразить А, я просто скрыть frame_list и добавить к frame_view , и когда мне нужно отобразить B и CI, установите frame_list, видимый, и добавьте два фрагмента в каждый фрейм в той же транзакции фрагмента.
FragmentTransaction t = getSupportFragmentManager().beginTransaction();
t.remove(fragmentA);
t.add(R.id.frame_list, fragmentB);
t.add(R.id.frame_view, fragmentC);
t.addToBackStack(null);
t.commit();
Таким образом, когда я нажимаю кнопку назад, как C и B уходят, и я вернулся к фрагменту, но теперь frame_list виден (и пустой).
Я имею в виду, чтобы решить эту проблему двумя способами:
- наиважнейшая onBackPressed скрыть левую рамку, если это необходимо;
- гнездо B и C в другом фрагменте;
Но я также чувствую, что, вероятно, я рассматриваю проблему не так, и, возможно, есть более чистое дизайнерское решение. У тебя есть какой-нибудь совет?