У меня есть разные макеты для портретного и ландшафтного режима. layout\activity_main.xml
:Сохранение состояния фрагмента при изменении ориентации при использовании разных макетов для разных ориентаций
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout android:id="@+id/container"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
</RelativeLayout>
И layout-large\activity_main.xml
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/fragment1"
android:name="com.example.fragmentorientationchangetest.Fragment1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment
android:id="@+id/fragment2"
android:name="com.example.fragmentorientationchangetest.Fragment2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
Мои фрагменты одинаковы, и fragment2.xml
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragment 2" />
<EditText android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:layout_below="@+id/text"/>
</RelativeLayout>
То, что я хочу, когда я ввожу текст в редактировании текста в моих фрагментах и я поворачиваю экран, текст редактирования не теряет текст ввода.
Поскольку фрагменты в портретном и ландшафтном режимах не являются одним из примеров, я не могу использовать setRetaintInstance
или onSaveInstanceState
. Как я могу это сделать без определения двух действий и без использования onConfigurationChanged
?
Примечание: Без добавления какого-либо кода каждый фрагмент сохраняет свои данные. Поэтому, если я введу какой-то текст в фрагмент2 в портретном режиме и повернусь к пейзажу и снова вернусь в портретный режим, я увижу введенный текст.
«Я хочу, когда я ввожу текст в текст редактирования в своих фрагментах, и я поворачиваю экран, текст редактирования не теряет текст ввода». и «Примечание: без добавления какого-либо кода каждый фрагмент сохраняет свои данные. Поэтому, если я введу какой-то текст в фрагмент2 в портретном режиме и снова повернусь к пейзажу и снова вернусь в портретный режим, я увижу введенный текст». ** так в чем вопрос? ** и ** примечание стороны: если вы собираетесь редактировать свой вопрос, добавьте Edit или Update после того, как кто-то ответил ** – mmlooloo
@mmlooloo Я в портретном режиме. Я ввожу текст в текст редактирования, а затем поворачиваю в альбомную. Я не вижу введенный текст, затем снова поворачиваю экран в портретный режим, и я вижу введенный текст. Что мне делать, чтобы увидеть введенный текст при переходе с земли на порт и обратно? –
, потому что ваши фрагменты не являются одним экземпляром, ваша проблема действительно попадает в категорию обмена фрагментами, и я думаю, что мое решение является самым простым. вы можете ждать других, но мое решение - мой ответ. – mmlooloo