Передача объектов во фрагмент без аргумента
Каковы будут последствия, если я сдал object
к fragment
без использования bundle
? Я просто открыл один из старого кода и нашел его там, и не мог не задать этот вопрос, поскольку я никогда не пробовал его. Также я не нахожу никаких утечек памяти в этом.
Вот как это реализовано -
Класс деятельности:
MyFragment fragment =
MyFragment.newInstance(getIntent().getStringExtra(DATA),
instance.getCallback(),
instance.getRequest());
getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment).commit();
Фрагмент класса:
public class MyFragment extends Fragment {
public MyFragment() {
/* Required empty public constructor */
}
public static MyFragment newInstance(String data, Callback callback,
Request request) {
MyFragment fragment = new MyFragment();
fragment.setCallback(callback);
fragment.setRequest(request);
fragment.setData(data);
return fragment;
}
private void setCallback(Callback callback) {
this.callback = callback;
}
private void setData(Data data) {
this.data = data;
}
private void setRequest(Request request) {
this.request = request;
}
}
Как правило, то, что я использовал до даты Fragment#setArguments(Bundle)
1 ответ
Пожалуйста, проверьте этот ответ: почему не рекомендуется передавать объект во фрагмент с помощью простого метода получения.
Короче говоря, вы потеряете ваши данные об изменениях конфигурации.
Существует в основном два способа общения с фрагментом: через связки или через интерфейс, который вы реализуете в своей деятельности. Пожалуйста, посмотрите эту ссылку, чтобы узнать, как правильно общаться с фрагментом через интерфейс: https://developer.android.com/training/basics/fragments/communicating