¿Cómo pasar una variable de Activity a Fragment y pasarla de nuevo?

Actualmente estoy haciendo 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. Por lo tanto, quiero pasar la fecha al selector de fecha y volver a enviarla a la actividad.

He intentado muchas soluciones, pero ninguna está funcionando. La manera fácil pasaría una discusión, pero esto no se puede hacer con fragmentos.

Para pasar información a un fragmento , establezca Argumentos al crearlo, 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, agregue los argumentos que desea enviarle:

/** * 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; } 

Luego, dentro del fragmento en el método onCreate o onCreateView puede recuperar los argumentos como este:

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

Si desea ahora comunicarse desde su fragmento con su actividad (enviar o no datos) , necesita usar interfaces. La forma en que puede hacer esto se explica muy bien en el tutorial de documentación de comunicación entre fragmentos. Como 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 actividad para usar estos datos en la actividad o enviarlos a otro fragmento que contenga su actividad.

Documentación tutorial:

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

Enviar datos de la Activity a un Fragment

Actividad:

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

Fragmento:

Leyendo el valor en fragmento

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

Pero si desea enviar valores de Fragment a Activity, lea la respuesta de jpardogo, debe necesitar interfaces, más información: Comunicarse con otros Fragmentos

Use la biblioteca EventBus para pasar el evento que podría contener su variable de ida y vuelta. Es una buena solución porque mantiene tus actividades y fragmentos ligeramente acoplados

https://github.com/greenrobot/EventBus

Simplemente puede crear una instancia de su fragmento con un paquete:

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

gracias a @ ρяσѕρєя K y Terry … me ayuda mucho y funciona perfectamente

De Activity envías datos con intención como:

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

y en el método Fragment onCreateView:

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

referencia: enviar datos de la actividad a fragmentar en Android