Cómo obtener datos de DialogFragment a un fragmento?
Imagínese, tengo FragmentA de la que comienzoDialogFragment (hay EditText
en cuadro). ¿Cómo puedo recuperar el valor de la EditText
a FragmentA ? Trato de hacer algo como esto , y esto, pero no tuve éxito.
- Las variables de miembro de fragmento que obtienen null cuando se accede en onPageSelected ()
- ¿Hay una manera de establecer android: windowSoftInputMode por Fragment?
- Puedo usar el paginador de vista con vistas (no con fragmentos)
- Cómo extender LinearLayout correctamente para crear una vista personalizada
- FindFragmentByTag null para Fragmento A, si setRetain (true) en Fragmento B
- AndroidRuntimeException: requestFeature () debe ser llamado antes de agregar contenido
- Los fragmentos anidados desaparecen durante la animación de transición
- Android FragmentTransaction setTransitionStyle
- Mostrar fragmento de piel en android
- ¿Crear una transición Fragment como la aplicación Contactos?
- Cómo enviar datos de la Actividad al Fragmento
- El intercambio de fragmentos por ocultar y mostrar con la transición de diapositivas hace que ambos se desvanecen
- Ocultar pestañas en el visor
El método Fragment.onActivityResult()
es útil en esta situación. Se necesita getTargetRequestCode()
, que es un código que se establece entre fragmentos para que puedan ser identificados. Además, se necesita un código de solicitud, normalmente sólo 0
si el código funcionó bien y, a continuación, una Intent
, que se puede adjuntar una cadena demasiado, al igual que
Intent intent = new Intent(); intent.putExtra("STRING_RESULT", str);
Además, se debe utilizar el fragmento setTargetFragment(Fragment, requestCode)
en el fragmento del que se envía el resultado para identificarlo. En general, tendría código en el fragmento de petición que se parece a esto:
FragmentManager fm = getActivity().getSupportFragmentManager(); DialogFragment dialogFragment = new DialogFragment(); dialogFragment.setTargetFragment(this, REQUEST_CODE); dialogFragment.show();
La clase para enviar datos (el DialogFragment) usaría este Fragmento que acabamos de definir para enviar los datos:
private void sendResult(int REQUEST_CODE) { Intent intent = new Intent(); intent.putStringExtra(EDIT_TEXT_BUNDLE_KEY, editTextString); getTargetFragment().onActivityResult( getTargetRequestCode(), REQUEST_CODE, intent); }
Para recibir los datos, utilizamos este tipo de clase en el Fragmento que inicialmente comenzó DialogFragment:
public void onActivityResult(int requestCode, int resultCode, Intent data) { // Make sure fragment codes match up if (requestCode == DialogFragment.REQUEST_CODE) { String editTextString = data.getStringExtra( DialogFragment.EDIT_TEXT_BUNDLE_KEY);
En este punto, tiene la cadena de su EditText
del DialogFragment
en el fragmento de origen. Simplemente utilice el sendResult(int)
en su clase anónima TextChangeListener()
para que el texto se envíe cuando lo necesite.
Es necesario enviar los datos del diálogo de nuevo a la actividad a través de un método de devolución de llamada y luego hacer que la actividad devuelva los datos al fragmento que desea que vaya a
public void datFromDialog(String data){ MyFragment mf = (MyFragment)getFragmentManager().findFragmentById(r.id.frag); mf.iWantNewData(data); }
Como un ejemplo rápido
Lo que quieres, según Android Developers …