В настоящее время я делаю приложение для Android и хочу передать дату между активностью и фрагментом. В моей активности есть кнопка, которая открывает фрагмент: DatePickerFragment.
В своей деятельности я показываю дату, которую я хочу изменить с помощью фрагмента. Поэтому я хочу передать дату в средство выбора даты и отправить ее обратно в действие.
Я перепробовал много решений, но ни одно из них не работает. Простой способ передать аргумент, но это не может быть сделано с фрагментами.
android
android-fragments
android-activity
Евгений Примако
источник
источник
Ответы:
Чтобы передать информацию фрагменту , вы устанавливаете Arguments при его создании, и вы можете получить этот аргумент позже с помощью метода onCreate или onCreateView вашего фрагмента.
В функции newInstance вашего фрагмента вы добавляете аргументы, которые хотите отправить ему:
Затем внутри фрагмента метода
onCreate
илиonCreateView
вы можете получить аргументы, подобные этому:Если вы хотите теперь общаться с вашим фрагментом с вашей деятельностью (отправка или нет данных) , вам нужно использовать интерфейсы. То, как вы можете это сделать, очень хорошо объяснено в руководстве по документированию связи между фрагментами. Поскольку все фрагменты обмениваются данными друг с другом через действие, в этом учебном руководстве вы можете увидеть, как вы можете отправлять данные из фактического фрагмента в его контейнер действий, чтобы использовать эти данные для действия или отправлять их в другой фрагмент, содержащийся в вашем действии.
Учебное пособие по документации:
http://developer.android.com/training/basics/fragments/communicating.html
источник
Отправка данных из
Activity
вFragment
Деятельность:
Фрагмент:
Чтение значения во фрагменте
Но если вы хотите отправить значения из фрагмента в активность, прочитайте ответ jpardogo, вам нужны интерфейсы, больше информации: связь с другими фрагментами
источник
Parcelable
но это дало мнеclass cast exception
спасибо @ ρяσѕρєя K и Терри ... это мне очень помогает и отлично работает
Из Activity вы отправляете данные с намерением:
и в методе Fragment onCreateView:
ссылка: отправить данные из деятельности на фрагмент в Android
источник
Используйте библиотеку EventBus для передачи события, которое может содержать вашу переменную, туда и обратно. Это хорошее решение, потому что оно держит ваши действия и фрагменты слабо связаны
https://github.com/greenrobot/EventBus
источник
Для всех разработчиков Kotlin там:
Вот предлагаемое Android Studio решение для отправки данных в ваш фрагмент (= когда вы создаете пустой фрагмент с помощью файла -> Новый -> Фрагмент -> Фрагмент (пустой) и вы отмечаете «включить методы фабрики фрагментов»).
Поместите это в свой фрагмент:
.apply
хороший прием для установки данных при создании объекта или в том виде, в каком они здесь указаны :Затем в своей деятельности или фрагменте выполните:
и прочитайте Аргументы в вашем Фрагменте, такие как:
Чтобы «отправить» данные обратно в свою активность , просто определите функцию в своей активности и выполните следующие действия в своем фрагменте:
Наслаждайтесь магией Kotlin!
источник
Отправка данных из Activity во фрагменты, связанные с помощью XML
Если вы создаете фрагмент в Android Studio с помощью одного из шаблонов, например, «Файл»> «Создать»> «Фрагмент»> «Фрагмент (список)», этот фрагмент связывается с помощью XML. Метод newInstance создается во фрагменте, но никогда не вызывается, поэтому его нельзя использовать для передачи аргументов.
Вместо этого в Activity переопределите метод onAttachFragment
Затем прочитайте аргументы в методе фрагмента onCreate согласно другим ответам
источник
Вы можете просто создать свой фрагмент с помощью пакета:
источник