Liste de tableaux en tant que variable globale
J'ai créé la classe qui s'étendent de l'application comme ça
package com.appnetics;
import java.util.ArrayList;
import android.app.Application;
public class GlobalVariables extends Application {
public ArrayList<Encounter> encounters;
}
et de les mettre en manifist comme ce
<application
android:name="GlobalVariables"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
dans un Actiity je remplis ce tableau à l'aide de ce code
GlobalVariables appState = new GlobalVariables();
appState.encounters =new ArrayList<Encounter>();
................
then add
tentent de l'utiliser il crash avec nulle exception, je l'utilise dans une autre activité ou de la classe comme ça
GlobalVariables appState = new GlobalVariables();
Encounter EncounterObject = appState.encounters.get(position);
est qu'il manque quelque chose s'il vous plaît , comment faire pour résoudre ce
Vous créez une nouvelle instance de GlobalVariabels à chaque fois. Ainsi, lorsque vous essayez d'obtenir votre liste get(position) sera nulle
OriginalL'auteur AMH | 2012-06-11
Vous devez vous connecter pour publier un commentaire.
C'est un instance variable de la
GlobalVariables
classe, de sorte que chaque fois que vous créez un nouveau instance deGlobalVariables
, vous obtiendrez une variable distincte.Si vous vraiment voulez une variable globale, il doit être un statique variable, mais même cela ne fonctionnera que si vous êtes le partage de données entre les activités dans le même processus. Vous devriez lire les Application Android Cadre FAQ pour plus d'informations.
OriginalL'auteur Jon Skeet
Je voudrais utiliser le pattern Singleton ici. Lien wikipédia
Et puis vous pouvez accéder à vos données à l'aide de:
OriginalL'auteur Trasvi
Vous pouvez faire singleton ([http://en.wikipedia.org/wiki/Singleton_pattern]) de la classe qui fournissent une instance de l'objet. Et créer ArrayList vériables dans cette classe. Et la vous pouvez accéder à cette liste de tableaux où vous voulez.
Par exemple classe singleton:
Et à l'aide de l'activité:
OriginalL'auteur RomaTTi
Vous créez un nouvel objet application en appelant le constructeur à chaque fois, au lieu de cela, vous devriez obtenir de Référence de la Demande, par la méthode, getApplication(). Si vous devez modifier votre code pour:
et
Pour appeler en Classe Étendant AsyncTask vous avez besoin pour passer de l'Application ou de l'Activité de Référence pour l'AsyncTask.
qui appeler la asyncktask est étendent à partir de fragment donc je n'ai que du contexte
OriginalL'auteur jeet