¿Puedo crear un objeto de una Actividad en otra clase?

Resuelto Pramod Yadav asked hace 54 años • 3 respuestas

He definido una función y MainActivityahora quiero acceder a la función desde otra clase en mi aplicación. He creado un objeto del MainActivityy 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.

Pramod Yadav avatar Jan 01 '70 08:01 Pramod Yadav
Aceptado

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
Lumis avatar Feb 19 '2013 11:02 Lumis

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.

Raghav Sood avatar Feb 19 '2013 11:02 Raghav Sood