Junior — Middle
Kādus datu pārraides veidus starp Fragment un Activity jūs zināt, kā arī informācijas apmaiņas veidus no viena ekrāna uz otru?
sobes.tech AI
Atbilde no 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");
}
// ...
}