Итак, я узнал, что мне нужен пустой конструктор, чтобы мои фрагменты не падали при повторной инициализации. Моя проблема в том, что я использую списки данных для своих фрагментов, когда они инициализируются (по крайней мере, некоторые из них).Итак, что было бы хорошим способом начать новые фрагменты со списком данных.Должен ли я в OnCreate() сделать метод getData, который получает данные из какого-либо другого источника или какой подход был бы правильным?
Наполнение пакета данными было бы не очень хорошим подходом, поскольку у меня много данных.
Итак, давайте рассмотрим случай (я так это лучше понять).
Когда пользователь нажимает кнопку, фрагмент запускается. Раньше я создавал новый фрагмент следующим образом:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.center_container, new DetailFragment(item));
fragmentTransaction.addToBackStack(DETAIL_TAG);
fragmentTransaction.commit();
Затем в моем фрагменте:
public DetailFragment(EventItem item) {
mItem = item;
mPlaces = Database.getContainerPlaces(getActivity()).getValidItems();
}
I can' не передавать все данные в пакет, так что это не сработает.И что я должен делать?
A: Должен ли я инициализировать фрагмент с помощью пустого конструктора, а затем использовать сеттеры из моей активности для установки данных непосредственно во фрагменте? Однако не будут ли у меня пропущены данные, если пользователь нажмет домой, андроид закроет фрагмент, а пользователь вернется позже?
B: Должен ли я инициализировать фрагмент фабричным шаблоном и вызвать setRetainInstance(true), дать фрагменту ключ для идентификации данных, а затем позволить фрагменту получить данные, необходимые в onCreateView, из какого-то третьего источника?
C: Должен ли я просто создать пустой конструктор, а затем в onCreate() получить данные, необходимые для фрагмента?
Следует отметить, что приложение заблокировано в портретной ориентации, поэтому проблема в основном связана с сохранением объектов при закрытии Android и перезапуске пользователя.