321 votes

Variable globale Android

Comment puis-je créer global variable donjon restent valeurs autour du cycle de vie de l’application peu importe quelle activité en cours d’exécution...

582voto

Jeff Gilfelt Points 15494

Vous pouvez étendre la base `` de la classe et ajoutez des variables membres comme suit :

Dans votre manifeste d’android, vous devez déclarer la classe qui implémente android.app.Application :

Puis dans vos activités vous pouvez obtenir et le jeu de la variable comme suit :

45voto

Ramps Points 2973

Salut
Vous pouvez utiliser un Pattern Singleton. Comme ça :

Dans votre application, vous pouvez accéder votre singleton de cette façon :

18voto

mahasam Points 177

Cette variable globale travailler mon projet

14voto

r1k0 Points 796

Vous pouvez utiliser les préférences de l'application. Ils sont accessibles à partir de n'importe quelle activité ou morceau de code tant que vous transmettez sur le Contexte de l'objet, et ils sont privés de l'application qui les utilise, de sorte que vous n'avez pas besoin de s'inquiéter sur l'exposition d'application des valeurs spécifiques, à moins que vous traitez avec acheminé appareils. Même ainsi, vous pouvez utiliser le hachage ou de systèmes de cryptage pour enregistrer les valeurs. Aussi, ces préférences sont sauvegardées à partir d'une application à l'autre. Voici certains exemples de code que vous pouvez regarder.

8voto

Dan Mikita Points 28

Il ya quelques façons que vous pouvez obtenir ce que vous demandez.

1.) Étendre l'application de la classe et l'instanciation de votre contrôleur et les objets de modèle.

public class FavoriteColorsApplication extends Application {

    private static FavoriteColorsApplication application;
    private FavoriteColorsService service;

    public FavoriteColorsApplication getInstance() {
        return application;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        application = this;
        application.initialize();
    }

    private void initialize() {
        service = new FavoriteColorsService();
    }

    public FavoriteColorsService getService() {
        return service;
    }

}

Ensuite, vous pouvez appeler le votre singleton à partir de votre Application personnalisée objet à tout moment:

public class FavoriteColorsActivity s'étend de l'Activité {

private FavoriteColorsService service = null;
private ArrayAdapter<String> adapter;
private List<String> favoriteColors = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_favorite_colors);

    service = ((FavoriteColorsApplication) getApplication()).getService();
    favoriteColors = service.findAllColors();

    ListView lv = (ListView) findViewById(R.id.favoriteColorsListView);
    adapter = new ArrayAdapter<String>(this, R.layout.favorite_colors_list_item,
            favoriteColors);
    lv.setAdapter(adapter);
}

2.) Vous pouvez avoir votre manette, il suffit de créer une instance du singleton de lui-même:

public class Controller {
    private static final String TAG = "Controller";
    private static sController sController;
    private Dao mDao;

    private Controller() {
        mDao = new Dao();    
    }

    public static Controller create() {
        if (sController == null) {
            sController = new Controller();
        }
        return sController;
    }
}

Ensuite, vous pouvez simplement appeler la méthode de création d'une Activité ou d'un Fragment, il va créer un nouveau contrôleur si l'un n'existe pas déjà, sinon il sera de retour préexistantes contrôleur.

3.) Enfin, il y a une nappe cadre créé à la Place qui vous propose l'injection de dépendance au sein d'Android. Il est appelé à la Dague. Je ne rentrerai pas dans la façon de l'utiliser ici, mais il est très habile si vous avez besoin de ce genre de chose.

J'espère que j'ai donné assez de détails en ce qui concerne la façon dont vous pouvez faire ce que vous espérez pour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X