Обновление закадровых фрагментов в ViewPager
У меня есть приложение, которое имеет три фрагмента: записи, диаграммы и круговая диаграмма. Эти фрагменты хранятся в ViewPager в одном действии, и пользователь может перемещаться между ними. Фрагмент Записи имеет таблицу, в которую пользователь может вводить данные. Когда пользователь вводит данные, два других фрагмента необходимо обновить, поскольку они ссылаются на эти данные. Первоначально я хотел, чтобы фрагменты обновлялись по мере их перелистывания, но, поскольку они являются смахиваемыми, я не могу использовать onPause() и onResume(), потому что onPause() (и, следовательно, onResume()) вызывается только когда вкладка 2+ экрана. Поэтому я решил сделать так, чтобы фрагмент "Записи" отправлял обратный вызов в "Активность", чтобы другие фрагменты обновлялись при обновлении фрагмента "Записи". Я храню все фрагменты в памяти, и это прекрасно работает, пока приложение не перейдет в фоновый режим. Когда приложение выходит из фона, если пользователь вводит данные в таблицу, приложение аварийно завершает работу, поскольку все переменные в других фрагментах равны нулю. Почему это происходит? Я не использую saveinstancestate в моем приложении. Должна ли я быть?
1 ответ
Идя по примеру отсюда:
http://developer.android.com/reference/android/app/Fragment.html
Вы должны сохранить все свои данные, которые поддерживают каждый из ваших компонентов пользовательского интерфейса, в Bundle вашего onSaveInstance() вашего фрагмента. Затем в обратном вызове onActivityCreated() восстановите данные.