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.

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 …

  • Cómo deshabilitar el marcador de mapa android
  • La animación de fragmentos de Android se repite de nuevo en el cambio de orientación
  • OnResume () no se llama en SherlockFragment de SherlockFragmentActivity en Android?
  • Cómo ocultar la barra de acción (Sherlock) dentro de un fragmento?
  • Suspender subprocesos al ejecutar múltiples AsyncTasks en fragmentos anidados y hace que la aplicación sea lenta
  • Menú en Fragmentos no mostrados
  • Cambiar el orden z de Fragmentos durante la FragmentTransaction en curso
  • Fragmentos ocultos backstack re-mostrado en el cambio de configuración
  • OnSaveInstanceState () del fragmento nunca se llama
  • Patrón de diseño para fragmentos en android
  • Indicador ViewPager con ListView personalizado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.