Creating an Object accessible by all Activities in Android

The easiest way to do this is by creating an Singleton. It's a kind of object that only can be created once, and if you try to access it again it will return the existing instance of the object. Inside this you can hold your array.

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;
    }

}

Read more about singleton: http://en.wikipedia.org/wiki/Singleton_pattern


You can extend the application class. And add your arrays there.

You can access the instance of the class by using this command

MyApplication appContext = (MyApplication)getApplicationContext();

Well you can create a Constant class and declare you ArrayList as a static variable.

1.)

 Class ConstantCodes{

         public static ArrayList<MyClass> list = new ArrayList<MyClass>;
    }

This will be accessible from everywhere you want by just ConstantCodes.list

2.) You can extend your class by Application class like this

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){
    ...
    Globalclass appState = ((Globalclass)getApplicationContext());
    String state = appState.getState();
    ...
  }
}

Tags:

Android