Android: сохранение состояния фрагмента / содержимого каждого представления в каждом фрагменте при использовании ViewPager - PullRequest
1 голос
/ 13 сентября 2011

Мне действительно очень нужна серьезная помощь.Я создаю приложение для Android, которое использует PagerAdapter для создания Fragments в activity.Разный фрагмент состоит из разных видов в зависимости от необходимости, которые создаются во время выполнения.В последнем фрагменте я создал вид "Submit button", который при нажатии должен получать введенные пользователем значения из каждого представления (например, EditText) из всех фрагментов.

Я использую следующую команду для получения представлений (внутри упомянутой выше кнопки clicklistener):

EditText e = (EditText) (getActivity().findViewById(i));

Но не получается представление с этим идентификатором, кроме двух последних фрагментов.Итак, я предполагаю, что это сохраняет состояние только двух последних фрагментов в этом действии.Итак, как я могу сохранить 'view states' всех фрагментов в деятельности ??

И не правда ли, что когда представление создается во фрагменте и добавляется в его макет, это представление также добавляется в основной макет действия ??Я неправильно понимаю? Пожалуйста, дайте мне знать.

Чтобы упростить это, мой вопрос:

Как мы можем сохранить введенное пользователями содержимое в динамически создаваемом EditTextво фрагментах, созданных с помощью ViewPager (чтобы к нему можно было получить доступ позже) ??

1 Ответ

0 голосов
/ 08 октября 2011

Когда вы добавляете фрагмент в FragmentPagerAdapter (при условии, что вы не написали пользовательский пейджер), он добавляется в FragmentManager. Менеджер фрагментов не зависит от жизненного цикла действия, поэтому он сохраняет состояние фрагмента.

Если вы посмотрите здесь: http://code.google.com/p/ratebeerforandroid/source/browse/trunk/JakeWharton-ActionBarSherlock/library/src/android/support/v4/app/FragmentPagerAdapter.java?spec=svn42&r=42

Вы можете понять, как это работает. Если вы хотите сохранить состояние фрагмента для другого сеанса, вам нужно извлечь каждый фрагмент обратно (getItem) и либо использовать onSaveInstanceState, либо написать собственную пользовательскую функцию

Надеюсь, что поможет

...