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.