2011-03-06 9 views
8

Por lo tanto, obtuve el evento en mi fragmento para pasarlo a la actividad, entonces ¿cómo lo hago para que la actividad en turnos, notifique al fragmento B que haga algo? Quiero fragmentar B para llenar una lista personalizada cuando el fragmento A tiene un elemento de lista en el que se hace clic. Entonces, envía el evento a la actividad, ¿ahora cómo obtengo la actividad para llamar eventos en el fragmento B?Eventos de fragmento de llamada de la actividad

Respuesta

32

Una forma de hacerlo sería como esto en su actividad:

FragmentB fragmentB = (FragmentB)getFragmentManager().findFragmentById(R.id.fragmentBId); 
fragmentB.performSomeTask(); 

Esto es, por supuesto, asumiendo que tiene un método accesible públicamente en FragmentB llama performSomeTask();

Espero que ayude!

+0

Im estúpido, puedo hacerlo llamando a fragment_b.doTask() si se declara como público y estático. – Shaun

+2

si llama a ese método performSomeTask en el método de actividad onCreate y digamos que rellena algún campo de texto de edición en él. Tendrá una excepción de puntero nulo en caso de que esté inicializando el texto de edición en el método onActivityCreate del fragmento. ¿Cuál es la mejor solución aquí? – Maxrunner

10

La mejor práctica es probablemente crear interfaces para ambos fragmentos y luego hacer que la actividad implemente las interfaces. Desea tener un buen desacoplamiento entre los fragmentos para poder reutilizarlos en otros lugares.

Cuestiones relacionadas