Как восстановить фрагмент вместе с введенными пользователем данными - PullRequest
1 голос
/ 05 мая 2019

У меня есть 3 фрагмента: где пользователь вводит информацию в первые 2, т. Е. A и B, и введенная информация суммируется в C. Я использую пакет для сбора информации, а также backstack, чтобы помочь пользователю вернуться назад.

Однако основная проблема заключается в том, что информация, введенная во фрагментах A и B, не сохраняется, когда пользователь удаляется от них.Поэтому я использую данные в комплекте для предварительного заполнения любой предварительно введенной информации, если пользователь вернется к фрагментам A или B.

Это действительно больно, потому что у меня есть все виды представлений.TextViews и TimePickers - это хорошо, но RadioButtons и CheckBox действительно сложны.

Я довольно новичок в Android, кодирую уже около 4 месяцев.Существует ли простой способ просто сохранить и восстановить фрагмент (возможно, с использованием тега фрагмента), который бы также сохранял введенную пользователем информацию?Если так, пожалуйста, будьте описательными.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Предполагая, что эти 3 фрагмента размещены одним и тем же действием, вы можете использовать общий экземпляр ViewModel, который представляет данные, относящиеся к этим 3 фрагментам.

Посмотрите эту ссылку https://developer.android.com/topic/libraries/architecture/viewmodel

Там есть раздел об обмене данными между фрагментами, где показан пример пользовательской модели представления, которая используется двумя фрагментами. Ключевая вещь там

model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);

Обратите внимание, что в качестве «владельца» этого экземпляра SharedViewModel используется вмещающее действие. Таким образом, два фрагмента, размещенные в одном и том же Activity, получат экземпляр этого SharedViewModel и смогут обмениваться данными. Если вам необходимо сохранить эти данные, вы можете инкапсулировать эту логику в ViewModel или сделать так, чтобы ViewModel делегировал ее некоторому классу DAO / Repository.

0 голосов
/ 06 мая 2019

Однако основная проблема заключается в том, что информация, введенная во фрагментах A и B, не сохраняется, когда пользователь отходит от них.

Простой способ - использовать SharedPreferences,сохранить информацию, введенную во фрагментах A и B, в SharedPref в качестве значения ключа, затем извлечь их во фрагменте c и выполнить ваши вычисления.

RadioButtons и CheckBoxes действительно сложны.

Также сохраните состояние каждого RadioButtons и CheckBoxes в SharedPref, затем извлеките их и установите там статус.

...