Comment passer une variable d’Activité à Fragment et la renvoyer?

Je fais actuellement une application Android, et je veux passer une date entre activité et fragment. Mon activité comporte un bouton qui ouvre le fragment: DatePickerFragment.

Dans mon activité, je montre une date que je veux modifier avec le fragment. Je veux donc passer la date à l’actionneur et la renvoyer à l’activité.

J’ai essayé beaucoup de solutions, mais aucune ne fonctionne. La méthode simple passerait un argument, mais cela ne peut pas être fait avec des fragments.

Pour transmettre des informations à un fragment , vous définissezArguments lorsque vous le créez, 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 voulez lui envoyer:

/** * Create a new instance of DetailsFragment, initialized to * show the text at 'index'. */ public static DetailsFragment newInstance(int index) { DetailsFragment f = new DetailsFragment(); // Supply index input as an argument. Bundle args = new Bundle(); args.putInt("index", index); f.setArguments(args); return f; } 

Ensuite, à l’intérieur du fragment de la méthode onCreate ou onCreateView, vous pouvez récupérer les arguments suivants:

 Bundle args = getArguments(); int index = args.getInt("index", 0); 

Si vous souhaitez maintenant communiquer depuis votre fragment avec votre activité (envoi ou non de données) , vous devez utiliser des interfaces. La façon dont vous pouvez le faire est très bien expliquée dans le didacticiel de documentation sur la communication entre les fragments. Étant donné que tous les fragments communiquent entre eux via l’activité, vous pouvez voir dans ce didacticiel comment envoyer des données du fragment réel à son conteneur d’activité pour utiliser ces données sur l’activité ou les envoyer à un autre fragment que votre activité contient.

Tutoriel de documentation:

http://developer.android.com/training/basics/fragments/communicating.html

Envoi de données d’une Activity à un Fragment

Activité:

 Bundle bundle = new Bundle(); Ssortingng myMessage = "Stackoverflow is cool!"; bundle.putSsortingng("message", myMessage ); FragmentClass fragInfo = new FragmentClass(); fragInfo.setArguments(bundle); transaction.replace(R.id.fragment_single, fragInfo); transaction.commit(); 

Fragment:

Lecture de la valeur dans fragment

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Ssortingng myValue = this.getArguments().getSsortingng("message"); ... ... ... } 

Mais si vous voulez envoyer des valeurs de Fragment à Activity, lisez la réponse de jpardogo, vous devez avoir des interfaces, plus d’informations: Communiquer avec d’autres fragments

Utilisez la bibliothèque EventBus pour transmettre un événement pouvant contenir votre variable. C’est une bonne solution car elle maintient vos activités et vos fragments faiblement liés

https://github.com/greenrobot/EventBus

Vous pouvez simplement instancier votre fragment avec un bundle:

 Fragment fragment = Fragment.instantiate(this, RolesTeamsListFragment.class.getName(), bundle); 

merci à @ ρяσѕρєя K et Terry … cela m’aide beaucoup et fonctionne parfaitement

À partir de l’activité, vous envoyez des données avec l’intention de:

 Bundle bundle = new Bundle(); bundle.putSsortingng("edttext", "From Activity"); // set Fragmentclass Arguments Fragmentclass fragobj = new Fragmentclass(); fragobj.setArguments(bundle); 

et dans la méthode Fragment onCreateView:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // get arguments Ssortingng strtext = getArguments().getSsortingng("edttext"); return inflater.inflate(R.layout.fragment, container, false); } 

reference: Envoyer des données d’activité à fragmenter dans Android