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? P>
Fondamentalement ceci: p>
7 Réponses :
Vous devez le rendre statique et l'accéder à une autre activité ..... p>
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 p>
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;
}
}
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.
Eh bien, vous pouvez créer une classe constante et vous déclarer votre arraylist comme une variable statique.
1.) p> Ceci sera accessible de partout où vous voulez juste 2.) Vous pouvez étendre votre classe par classe d'application comme celle-ci p> ConstatCodes.List Code> P>
Que diriez-vous d'utiliser un mot clé statique? p>
dans votre classe d'activité qui initie votre objet p> SOMECLASS SOMOCLASS STATIQUE PUBLIQUE TOLEOOBJECT CODE> P>
1- Dans votre Activité1 STRUT>, DÉLARE Votre tableau dans Activity1.myArray
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;
}
}