Actualmente estoy creando una aplicación para Android y quiero pasar una fecha entre la actividad y el fragmento. Mi actividad tiene un botón, que abre el fragmento: DatePickerFragment.
En mi actividad muestro una fecha, que quiero modificar con el fragmento. Entonces, quiero pasar la fecha al selector de fechas y enviarla nuevamente a la actividad.
He probado muchas soluciones, pero ninguna funciona. La manera fácil pasaría una discusión, pero esto no se puede hacer con fragmentos.
android
android-fragments
android-activity
Eugene Primako
fuente
fuente
Respuestas:
Para pasar información a un fragmento , establezca Argumentos cuando lo cree, y puede recuperar este argumento más adelante en el método onCreate o onCreateView de su fragmento.
En la función newInstance de su fragmento, agrega los argumentos que desea enviarle:
Luego, dentro del fragmento del método
onCreate
oonCreateView
puede recuperar los argumentos de esta manera:Si ahora quiere comunicarse desde su fragmento con su actividad (enviando o no datos) , debe usar interfaces. La forma en que puede hacer esto se explica realmente bien en el tutorial de documentación de comunicación entre fragmentos. Debido a que todos los fragmentos se comunican entre sí a través de la actividad, en este tutorial puede ver cómo puede enviar datos desde el fragmento real a su contenedor de actividades para usar estos datos en la actividad o enviarlos a otro fragmento que contenga su actividad.
Tutorial de documentación:
http://developer.android.com/training/basics/fragments/communicating.html
fuente
Envío de datos desde
Activity
aFragment
Actividad:
Fragmento:
Leer el valor en fragmento
Pero si desea enviar valores desde Fragment a Activity, lea la respuesta de jpardogo, debe necesitar interfaces, más información: Comunicación con otros Fragments
fuente
Parcelable
pero eso me dioclass cast exception
gracias a @ ρяσѕρєя K y Terry ... me ayuda mucho y funciona perfectamente
Desde Actividad, envía datos con intención como:
y en el método Fragment onCreateView:
referencia: enviar datos de la actividad a fragmentos en Android
fuente
Use la biblioteca EventBus para pasar el evento que podría contener su variable de un lado a otro. Es una buena solución porque mantiene sus actividades y fragmentos vagamente acoplados.
https://github.com/greenrobot/EventBus
fuente
Para todos los desarrolladores de Kotlin:
Aquí está la solución propuesta por Android Studio para enviar datos a su Fragmento (= cuando crea un Fragmento en blanco con archivo -> Nuevo -> Fragmento -> Fragmento (en blanco) y marca "incluir métodos de fábrica de fragmentos").
Pon esto en tu Fragmento:
.apply
es un buen truco para establecer datos cuando se crea un objeto, o como dicen aquí :Luego, en su Actividad o Fragmento, haga lo siguiente:
y lea los Argumentos en su Fragmento como:
Para "enviar" datos a su Actividad , simplemente defina una función en su Actividad y haga lo siguiente en su Fragmento:
¡Disfruta de la magia de Kotlin!
fuente
Envío de datos de la actividad a fragmentos vinculados por XML
Si crea un fragmento en Android Studio utilizando una de las plantillas, por ejemplo, Archivo> Nuevo> Fragmento> Fragmento (Lista), el fragmento se vincula a través de XML. El método newInstance se crea en el fragmento pero nunca se llama, por lo que no se puede usar para pasar argumentos.
En cambio, en la Actividad, anule el método onAttachFragment
Luego lea los argumentos en el fragmento del método onCreate según las otras respuestas
fuente
Simplemente puede crear una instancia de su fragmento con un paquete:
fuente