2012-03-08 22 views
5

Estoy creando una clase personalizada en la clase de aplicación principal. Permite decir Mi mainAccount.Declarar una variable global para usar en todas las actividades

Ahora, estoy creando muchas actividades. Quiero variable mainAccount en cada actividad, ¿cómo puedo hacer eso? Una forma es poner en intento y pasar a cada actividad. ¿Hay alguna forma mejor, como hacerlo global etC?

Saludos

Respuesta

6

¿Ha pensado en utilizar las preferencias? Un gran recurso para obtener más información. http://mobile.tutsplus.com/tutorials/android/android-application-preferences/

O puede crear una clase que extienda la aplicación como demostrada por http://www.helloandroid.com/category/topics-covered/global-variables

+0

hmmm. Bueno, gracias, estaba buscando eso. –

+0

No hay problema. Ese primer enlace también tiene mucha información sobre muchas otras cosas. – mpeerman

6

mirar hacia arriba Singleton classes. Básicamente, quieres algo como esto.

public class Singleton { 
    private static Singleton instance = null; 
    protected Singleton() { 
     // Exists only to defeat instantiation. 
    } 
    public static Singleton getInstance() { 
     if(instance == null) { 
     instance = new Singleton(); 
     } 
     return instance; 
    } 
} 

Entonces, para cualquier clase que necesita tener acceso a la clase, llame a:

Singleton var=Singleton.getInstance(); 

Esto es esencialmente global, sin que la mayor parte de las consecuencias negativas de las variables globales. Garantizará que solo exista un objeto de esa clase, pero todos los que lo necesitan pueden acceder a él.

4

Simplemente defina una clase Resumen con esas variables y métodos, cualquiera que sea el que desee acceder en las actividades.

Por ejemplo:

public abstract class BaseActivity extends Activity 
{ 
    //static variables 
    // static methods 
} 

Ahora se extiende esta clase en su BaseActivity toda la actividad:

public class HelloAndroid extends BaseActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 
0

Puede usar la clase "Singleton" o tipo "estático" (si es que no es necesario inicializarlo, o una instancia heredar o implementar interfaces). clase

Singleton:

public class MySingletonClass { 

     private static MySingletonClass instance; 

     public static MySingletonClass getInstance() { 
      if (instance == null) 
       instance = new MySingletonClass(); 
      return instance; 
     } 

     private MySingletonClass() { 
     } 

     private String val; 

     public String getValue() { 
      return val; 
     } 

     public void setValue(String value) { 
      this.val = value; 
     } 
    } 

cadena s = MySingletonClass.getInstance() getValue();.

clase estática:

public class MyStaticClass { 
    public static String value; 
} 

cadena s = MyStaticClass.value;

Cuestiones relacionadas