Android: Pasar datos de fragmento hijo a fragmento padre
Necesito pasar algunos datos del fragmento secundario al fragmento padre que podré leer cuando vuelva al fragmento padre. En detalle:
Tengo una FragmentActivity que llama a FragmentParent. De FragmentParent llamo a FragmentChild así:
- Patrón de diseño para fragmentos en android
- OnCreateOptionsMenu () no se llama en Fragmento
- Comunicación de Android entre la actividad y el fragmento
- AutoCompleteTextView con Google Places mostrado en ListView al igual que Uber
- Cómo deslizar las pestañas dentro de un fragmento de cajón de navegación
FragmentChild fragmentChild = new FragmentChild(); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.frl_view_container, fragmentChild); transaction.addToBackStack(null); ctransaction.commit();
En FragmentChild establezco un valor de cadena que necesito pasar de nuevo a FragmentParent y luego regreso a FragmentParent.
String result = "OK"; getFragmentManager().popBackStack();
¿Cuál es la mejor / correcta manera de leer la cadena de resultados en FragmentParent?
- IsValidFragment Android API 19
- Detener fragmento de ser recreado después de reanudar?
- Cómo utilizar diferentes onKeyDown en fragmento de una misma actividad
- Los datos estáticos guardados dentro de singleton son nulos a veces cuando se vuelve a la aplicación desde el fondo
- Android ViewPager y TabLayout no funcionan rápido
- Android Fragment manejar pulsar botón de nuevo
- AppCompat v22.1.0 no theming todos los widgets xml correctamente para fragmentos
- Reemplazar fragmento dentro de un ViewPager
Puede utilizar setTargetFragment y onActivityResult para lograr esto.
Establezca la instancia de FragmentParent como fragmento de destino en la instancia de FragmentChild ie
FragmentChild fragmentChild = new FragmentChild(); fragmentChild.setTargetFragment(this, FRAGMENT_CODE); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.frl_view_container, fragmentChild); transaction.addToBackStack(null); transaction.commit();
En FragmentChild, dondequiera que esté invocando el popBackStack, invoque onActivityResult en el Fragmento de destino establecido. Utilice el paquete para transmitir datos adicionales.
Intent intent = new Intent(); intent.putExtra(FRAGMENT_KEY, "Ok"); getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent); getFragmentManager().popBackStack();
De vuelta en FragmentParent, anule el método onActivityResult predeterminado.
public void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == FRAGMENT_CODE && resultCode == Activity.RESULT_OK) { if(data != null) { String value = data.getStringExtra(FRAGMENT_KEY); if(value != null) { Log.v(TAG, "Data passed from Child fragment = " + value); } } } }
- Cómo configurar la imagen de salida use com.android.camera.action.CROP
- .getSupportActionBar no está disponible en Fragment; La solución lleva a NullPointerException en rotación