una studio pasar otro onattach llamar lanzar fragmentos entre desde cómo con comunicar comunicacion boton activity abrir android android-fragments android-fragmentactivity

android - studio - Fragmentar la comunicación de actividad pasando el objeto Contexto a onAttach()



onattach android (1)

Aquí hay un pequeño ejemplo que describirá la comunicación entre Activity y Fragment . Supongamos que tiene una interfaz ICommunication . Esto se da a continuación:

public interface ICommunication { public void testMethod(); }

Ahora que tiene un nombre de Activity MainActivity que implementa ICommunication , debe tener implementado el método testMethod() . A este método le gustará esto:

@Override public void testMethod() { Toast toast = Toast.makeText(getActivity(), "It''s called from Fragment", Toast.LENGTH_SHORT).show(); }

Ahora, supongamos que esta MainActivity pertenece a un Fragment name TestFragment . Si desea acceder a testMethod() de MainActivity desde TestFragment , puede simplemente llamar de esta manera:

((ICommunication)getActivity()).testMethod();

Aquí, TestFragment debe mantenerse en MainActivity .

Mi respuesta relacionada con la fuente está aquí Eso es :)

Estoy tratando de implementar fragmento a comunicación de actividad.

Pasé por el documento de desarrollador de Android donde se pasa un objeto de Actividad a un ciclo de vida de conexión y configura la comunicación Fragmento-Actividad.

Esta documentación solicita pasar el objeto Contexto en lugar de Actividad. Reemplacé todos los objetos Activity por objetos Context en el método de ciclo de vida en Attack. Pero está lanzando una NullPointerException al invocar el método de la interfaz desde Fragment.

@Override public void onAttach(Context context) { super.onAttach(context); try { colourChangerInterface = (ColourChangerInterface) context; } catch (Exception exp){ System.out.println("error!"); } }

¿Alguien puede por favor dar un pequeño ejemplo del uso de la nueva manera? Gracias

Editar :

Encontré este enlace donde la discusión detallada está allí sobre el mismo problema. El problema se debe a la API rota ''onAttach ()''; no recibe ningún llamado cuando se pasa el objeto Contexto.

Una solución simple y rápida encontrada en el enlace de arriba es mover el código de on Attach a onCreate.