Android tableau en tant que variable globale
Je sais comment passer une variable d'une activité à une autre en utilisant des variables globales.
par exemple
Dans one.java:
GlobalVars.setColour(0);
Dans two.java:
if (GlobalVars.getColour() == 0) ...
GlobalVariables.java:
private static int colour2;
public static int getColour() {
return colour2;
}
public static void setColour(int colour) {
colour2 = colour;
}
Que faire si j'ai un tableau dans one.java et j'ai besoin d'elle dans une autre classe?
ArrayList<String> myArr = new ArrayList<String>();
myArr est téléchargé avec les contacts de l'annuaire téléphonique du téléphone, de sorte qu'il est dynamique. J'ai besoin de télécharger un ListView avec ses éléments dans une classe de boîte de dialogue personnalisée. Comment faire pour passer à une autre activité/dialogue?
- Avez-vous envisagé d'utiliser un singleton ou en passant le tableau comme une intention supplémentaire?
- Les variables globales ne sont pas une stratégie pour passer des variables à travers. Utilisation
Intents
et des extras comme @matsjoe suggéré.
Vous devez vous connecter pour publier un commentaire.
La méthode que vous avez choisie (la création d'une instance statique) VA travailler pour un objet comme
ArrayList
de la même manière que vous l'avez fait avec la primitive (c'est la création d'un Singleton).Cependant, dans la plupart des cas, la création de champs statiques juste pour transmettre les données entre les Activités est certainement pas recommandé. Les deux primitives de données et
ArrayList<String>
peut être transmis en tant que figurants dans l'Intention que vous utilisez pour démarrer une autre Activité.Tous ces types de données (et plus) peuvent être facilement transmises dans un
Intent
. Ensuite, vous pouvez y accéder de l'autre côté comme suit:Si vous êtes à la transmission des données à une boîte de Dialogue vous pouvez appeler une méthode de définition et de transmettre tout ce que vous voulez sans vous soucier des frontières qui existent entre les Activités. Par exemple, avec un Dialogue personnalisé de mettre en œuvre une méthode dans votre boîte de dialogue, vous pouvez définir la valeur avant de l'afficher.
Ensuite, dans la méthode de votre Activité que vous envisagez de créer et d'afficher la boîte de Dialogue ne
Avis que c'est la façon dont vous voulez passer une liste d'éléments à un AlertDialog pour l'affichage. Ces dialogues ont également des méthodes comme
setItems()
pour transmettre les données avant de le montrer. Si vous êtes en Activité gère la boîte de dialogue pour vous (que vous appelezshowDialog()
de l'Activité), l'appel au setter dansonCreateDialog()
ouonPrepareDialog()
...celle qui est la plus appropriée.Espère que ça aide!
Si vous voulez envoyé des données à partir d'un
Activity
à un autre, vous devez utiliser unIntent
. Par exemple:Sonne comme une occasion idéale pour un fournisseur de contenu à mon avis
Prendre un coup d'oeil ici si peu familier avec eux:
http://developer.android.com/guide/topics/providers/content-providers.html
Vous voulez faire une instance de la classe que vous souhaitez utiliser dans l'autre classe alors accéder à la matrice.