Je crée actuellement une application Android et je souhaite passer une date entre l'activité et le fragment. Mon activité a un bouton, qui ouvre le fragment: DatePickerFragment.
Dans mon activité, je montre une date, que je souhaite modifier avec le fragment. Je souhaite donc transmettre la date au sélecteur de date et la renvoyer à l'activité.
J'ai essayé beaucoup de solutions, mais aucune ne fonctionne. Le moyen le plus simple de passer un argument, mais cela ne peut pas être fait avec des fragments.
android
android-fragments
android-activity
Eugène Primako
la source
la source
Réponses:
Pour transmettre des informations à un fragment , vous définissezArguments lors de sa création et vous pourrez récupérer cet argument ultérieurement sur la méthode onCreate ou onCreateView de votre fragment.
Sur la fonction newInstance de votre fragment, vous ajoutez les arguments que vous souhaitez lui envoyer:
Puis à l'intérieur du fragment sur la méthode
onCreate
ouonCreateView
vous pouvez récupérer les arguments comme ceci:Si vous souhaitez maintenant communiquer à partir de votre fragment avec votre activité (envoi ou non de données) , vous devez utiliser des interfaces. La manière dont vous pouvez le faire est très bien expliquée dans le tutoriel de documentation sur la communication entre fragments. Étant donné que tous les fragments communiquent entre eux via l'activité, dans ce didacticiel, vous pouvez voir comment envoyer des données du fragment réel à son conteneur d'activités pour utiliser ces données sur l'activité ou les envoyer à un autre fragment que contient votre activité.
Tutoriel de documentation:
http://developer.android.com/training/basics/fragments/communicating.html
la source
Envoi de données
Activity
à unFragment
Activité:
Fragment:
Lecture de la valeur en fragment
Mais si vous voulez envoyer des valeurs de Fragment à Activity, lisez la réponse de jpardogo, vous devez avoir besoin d'interfaces, plus d'informations: Communiquer avec d'autres fragments
la source
Parcelable
mais cela m'a donnéclass cast exception
merci à @ ρяσѕρєя K et Terry ... cela m'aide beaucoup et fonctionne parfaitement
À partir de l'activité, vous envoyez des données avec l'intention comme:
et dans la méthode Fragment onCreateView:
référence: envoyer des données d'activité à fragmenter dans Android
la source
Utilisez la bibliothèque EventBus pour transmettre des événements qui pourraient contenir votre variable d'avant en arrière. C'est une bonne solution car elle maintient vos activités et fragments faiblement couplés
https://github.com/greenrobot/EventBus
la source
Pour tous les développeurs Kotlin là-bas:
Voici la solution proposée par Android Studio pour envoyer des données à votre Fragment (= lorsque vous créez un Blank-Fragment avec File -> New -> Fragment -> Fragment (Blank) et que vous cochez "include fragment factory methods").
Mettez ceci dans votre Fragment:
.apply
est une belle astuce pour définir des données lors de la création d'un objet, ou comme ils l'indiquent ici :Ensuite, dans votre activité ou fragment, faites:
et lisez les arguments dans votre fragment tels que:
Pour «renvoyer» des données à votre activité , définissez simplement une fonction dans votre activité et procédez comme suit dans votre fragment:
Profitez de la magie de Kotlin!
la source
Envoi de données depuis l'activité vers des fragments liés par XML
Si vous créez un fragment dans Android Studio à l'aide de l'un des modèles, par exemple Fichier> Nouveau> Fragment> Fragment (Liste), le fragment est lié via XML. La méthode newInstance est créée dans le fragment mais n'est jamais appelée et ne peut donc pas être utilisée pour passer des arguments.
Au lieu de cela, dans l'activité, remplacez la méthode onAttachFragment
Ensuite, lisez les arguments de la méthode fragment onCreate selon les autres réponses
la source
Vous pouvez simplement instancier votre fragment avec un bundle:
la source