Итак, я узнал, что мне нужен пустой конструктор, чтобы мои фрагменты не рушились при повторной инициализации. Моя проблема в том, что я использую списки данных для своих фрагментов, когда они инициализируются (по крайней мере, некоторые из них). Итак, что будет хорошим способом запускать новые фрагменты со списком данных. Должен ли я в 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();
}
Я не могу передать все данные в пакет, так что это не сработает. Итак, что мне делать?
A: Должен ли я инициализировать фрагмент с помощью пустого конструктора, а затем из моей настройки использования активности для установки данных непосредственно в фрагменте? Однако, не будет ли я отсутствовать данные, если пользователь нажимает на дом, андроид закрывает фрагмент и пользователь позже возвращается?
B: Должен ли я инициализировать фрагмент с помощью шаблона factory и вызвать setRetainInstance (true), предоставить фрагменту ключ для идентификации данных, а затем позволить фрагменту извлечь данные, необходимые в onCreateView, из какого-то третьего источника?
C: Должен ли я просто создать пустой конструктор, а затем в onCreate() извлечь данные, необходимые для фрагмента?
Следует отметить, что приложение заблокировано в портрете, поэтому проблема связана, прежде всего, с сохранением объектов, когда Android закрывается и пользователь перезагружается.