Назад к вопросам
Ozon Fresh
Junior — Middle
65
Какие методы передачи данных между Fragment и Activity вы знаете, а также способы обмена информацией с одного экрана на другой?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для передачи данных между Fragment и Activity в Android существуют несколько распространённых способов:
-
Через аргументы Fragment
- При создании Fragment можно передать данные через Bundle, используя метод
setArguments(). - В Fragment данные извлекаются через
getArguments().
- При создании Fragment можно передать данные через Bundle, используя метод
-
Через методы Activity
- Fragment может вызвать метод Activity напрямую, если у него есть ссылка на Activity.
-
Использование интерфейсов (callback)
- Fragment объявляет интерфейс, который реализует Activity. Так Fragment может сообщать Activity о событиях и передавать данные.
-
ViewModel (Android Architecture Components)
- Общий ViewModel, связанный с Activity, позволяет Fragment и Activity обмениваться данными через LiveData.
-
EventBus или другие библиотеки событий
- Позволяют отправлять сообщения между компонентами без прямых ссылок.
Для обмена информацией между разными экранами (Activity) обычно используют:
-
Intent с Extras
- Передача данных через
Intent.putExtra()при запуске новой Activity.
- Передача данных через
-
Shared ViewModel (если используется Navigation Component и фрагменты)
-
Сохранение данных в SharedPreferences, БД или Singleton (для более долгосрочного хранения)
Пример передачи данных из Activity в Fragment через аргументы:
Bundle bundle = new Bundle();
bundle.putString("key", "value");
Fragment fragment = new MyFragment();
fragment.setArguments(bundle);
// затем добавить fragment в Activity
В Fragment:
@Override
public View onCreateView(...) {
Bundle args = getArguments();
if (args != null) {
String value = args.getString("key");
}
// ...
}