Creación de un objeto accesible por todas las actividades en Android
Estoy tratando de crear un ArrayList de datos que contienen objetos (como una lista de direcciones y propiedades (bastante complejo)) y me pregunto: ¿Cómo puedo hacer un objeto accesible (y editable) por todas las actividades y no sólo el que era Instanciado en
Básicamente esto:
- Crear matriz en la actividad 1
- Acceder a la misma matriz en la actividad 2 y 3
- ???
- Lucro.
La forma más sencilla de hacerlo es creando un Singleton. Es un tipo de objeto que sólo se puede crear una vez, y si intenta acceder de nuevo, devolverá la instancia existente del objeto. Dentro de esto usted puede sostener su arsenal.
public class Singleton { private static final Singleton instance = new Singleton(); // Private constructor prevents instantiation from other classes private Singleton() { } public static Singleton getInstance() { return instance; } }
Lea más acerca de singleton: http://en.wikipedia.org/wiki/Singleton_pattern
Puede extender la clase de aplicación. Y agrega tus matrices allí.
Puede acceder a la instancia de la clase mediante este comando
MyApplication appContext = (MyApplication)getApplicationContext();
Bueno, puede crear una clase Constant y declarar ArrayList como una variable estática.
1
Class ConstantCodes{ public static ArrayList<MyClass> list = new ArrayList<MyClass>; }
Esto será accesible desde cualquier lugar que desee por ConstantCodes.list
2.) Usted puede extender su clase por la clase de la aplicación como esto
class Globalclass extends Application { private String myState; public String getState(){ return myState; } public void setState(String s){ myState = s; } } class TempActivity extends Activity { @Override public void onCreate(Bundle b){ ... MyApp appState = ((MyApp)getApplicationContext()); String state = appState.getState(); ... } }
Deberías hacerla estática y acceder a ella desde cualquier otra actividad …..
¿Qué tal usar una palabra clave estática?
public static SomeClass someObject
En su clase de actividad que inicia su objeto
1- En su Activity1 , declare su matriz en estática pública
public static ArrayList<HashMap<String, String>> myArray = new ArrayList<HashMap<String, String>>();
2- En su Activity2 , Activity3 , etc. acceso a su ArrayList
Activity1.myArray