6
votes

Créer un objet accessible par toutes les activités dans Android

J'essaie de créer une arrayliste de données contenant des objets (comme une liste d'adresses et de propriétés (assez complexe)) et je me demande: comment puis-je faire un objet accessible (et modifiable) par toutes les activités et pas seulement le celui qu'il a été instancié dans?

Fondamentalement ceci:

  1. Créer une matrice dans Activité 1
  2. Accédez au même tableau dans l'activité 2 et 3
  3. ???
  4. profit.

0 commentaires

7 Réponses :


1
votes

Vous devez le rendre statique et l'accéder à une autre activité .....


0 commentaires

6
votes

Vous pouvez étendre la classe d'application. Et ajoutez vos tableaux là-bas.

Vous pouvez accéder à l'instance de la classe à l'aide de cette commande xxx


0 commentaires

12
votes

Le moyen le plus simple de le faire est de créer un singleton. C'est une sorte d'objet qui ne peut être créé qu'une seule fois, et si vous essayez d'y accéder à nouveau, il retournera l'instance existante de l'objet. À l'intérieur, vous pouvez contenir votre tableau.

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

}


2 commentaires

Merci d'avoir répondu! Cela serait-il aussi le moyen efficace de la plus ressource? Comment les singletons sont-ils efficaces?


Les mauvaises choses sur le singleton: car il n'y a pas de propriétaire réel de l'objet Garbagecollector ne le supprimera jamais de la mémoire. Il prendra ainsi cette mémoire aslong que l'application est active (jusqu'à l'onduleur). Mais nous pouvons également considérer que vous n'avez pas à créer de nouveaux objets tout le temps, ce qui vous donne une meilleure vitesse et une utilisation moins de mémoire.



3
votes

Eh bien, vous pouvez créer une classe constante et vous déclarer votre arraylist comme une variable statique.

1.) xxx

Ceci sera accessible de partout où vous voulez juste ConstatCodes.List

2.) Vous pouvez étendre votre classe par classe d'application comme celle-ci xxx


0 commentaires

0
votes

Que diriez-vous d'utiliser un mot clé statique?

SOMECLASS SOMOCLASS STATIQUE PUBLIQUE TOLEOOBJECT

dans votre classe d'activité qui initie votre objet


0 commentaires

0
votes

1- Dans votre Activité1 STRUT>, DÉLARE Votre tableau dans Static public STRY>

Activity1.myArray


0 commentaires

0
votes

Vous pouvez créer un fichier Java x à côté d'autres fichiers Java. X Fichier contient la méthode statique utilisée pour accéder à la méthode de la classe sans l'instancier. Maintenant, faites une méthode appelée CreativevaiaBe () et déclarer variable que vous souhaitez le rendre global. Maintenant, faites une méthode appelée getvariable () qui renvoie la variable globale.

à quel point vous souhaitez créer une variable globale, appelez CLASSNAME.Createvariable (). P>

et pour accéder à ce nom de classe de la variable .getvariable (). Voici mon exemple pour la classe de base de données. P>

public class GlobalDatabaseHelper{

    static DatabaseHelper mydb;
    public static DatabaseHelper createDatabase(Context context)
    {
        mydb = new DatabaseHelper(context);
        return mydb;
    }

    public static DatabaseHelper returnDatabase()
    {
        return mydb;
    }
}


0 commentaires