¿Puedo crear un objeto de una Actividad en otra clase?
He definido una función y MainActivity
ahora quiero acceder a la función desde otra clase en mi aplicación. He creado un objeto del MainActivity
y con ese objeto he llamado a la función. Aunque no hay ningún error, no se está ejecutando. Cada vez que intento ejecutarla, la aplicación falla.
La actividad A debe tener una variable.
static ActivityA activityA;
En estado onCreate:
activityA = this;
y agrega este método:
public static ActivityA getInstance(){
return activityA;
}
En la actividad B, llame
ActivityA.getInstance().myFunction(); //call myFunction using activityA
No puedes simplemente crear objetos de Actividades usando:
MyActivity activity = new MyActivity();
como lo haría con las clases normales de Java. Todas las actividades en Android deben pasar por el ciclo de vida de la actividad para que tengan un contexto válido adjunto.
Al tratar una Actividad como una clase Java normal, terminas con un contexto nulo. Como la mayoría de los métodos de una Actividad se llaman en su Contexto, obtendrá una excepción de puntero nulo, razón por la cual su aplicación falla.
En su lugar, mueva todos los métodos que deben llamarse desde otras clases a una clase de utilidad que acepte un contexto válido en su constructor y luego use ese contexto en los métodos para hacer el trabajo.