2012-03-08 3 views
5

Je crée une classe personnalisée dans la classe d'application principale. Disons mon mainAccount.Déclaration d'une variable globale à utiliser dans toutes les activités

Maintenant, je crée de nombreuses activités. Je veux mainAccount variable dans chaque activité, comment puis-je faire cela? Une façon consiste à mettre en intention et passer à chaque activité. Y a-t-il un meilleur moyen, comme le rendre global etC?

Cordialement

Répondre

6

Avez-vous pensé à utiliser les préférences? Une excellente ressource pour plus d'informations est. http://mobile.tutsplus.com/tutorials/android/android-application-preferences/

Ou vous pouvez créer une classe qui étend l'application comme grupe par http://www.helloandroid.com/category/topics-covered/global-variables

+0

hmmm. Eh bien merci, je cherchais ça. –

+0

Aucun problème. Ce premier lien a aussi beaucoup d'informations sur beaucoup d'autres choses. – mpeerman

6

Regardez en Singleton classes. Fondamentalement, vous voulez quelque chose comme ça.

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

Ensuite, pour toute classe qui a besoin d'accéder à la classe, appelez:

Singleton var=Singleton.getInstance(); 

C'est essentiellement global, sans la plupart des conséquences négatives des variables globales. Cela garantira qu'un seul objet de cette classe peut exister, mais tous ceux qui en ont besoin peuvent y accéder.

4

Il suffit de définir Résumé classe avec les variables et les méthodes auxquelles vous souhaitez accéder dans les activités.

Par exemple:

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

étend maintenant cette classe BaseActivity dans votre toute activité:

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

Vous pouvez utiliser la classe « singleton », ou classe « statique » (si vous ne avez pas besoin de l'initialiser, instancier ou hériter ou implémenter des interfaces).

Singleton classe:

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

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

Classe statique:

public class MyStaticClass { 
    public static String value; 
} 

String s = MyStaticClass.value;

Questions connexes