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í:
- Agregue dinámicamente fragmento en fragmento
- Cómo mostrar / ocultar fragmento con el dedo hacia arriba / hacia abajo como la aplicación androide de soundcloud
- No quiero actualizar el fragmento en el cambio
- Fragmentos lentos Android TabHost lento
- Fragmento de diálogo en pantalla completa de Android
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?
- Ejemplos de Fragmentos de Android
- Fragmentos de Viewpager y de Sherlock. ¿Cómo hacer somethng dentro de fragmento de FragmentActivity?
- GetSupportFragmentManager (). FindFragmentById () devuelve null
- Eliminación de un fragmento de la pila trasera
- OnClick o onItemClick mientras pausan resultados en "IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState"
- Añadir un fragmento a un diálogo
- ¿No debería haber una opción para que Fragmentos retenga los eventos de clic dentro de su jerarquía de vistas?
- Cualquier mejora de código en la adición / sustitución de fragmentos
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