Salut, je suis débutante en android et je galère sur un point :
j'ai crée une tache asynchrone dans une activité pour récupérer une liste d'objet en appelant un web service... Je recupère bien l'objet (une liste d'objet avec plusieurs attributs) que je stocke dans un tableau. J'arrive bien à lire ce tableau dans le "do in background " de la tache mais en "post execute " et ailleurs dans l'activité, le tableau est nul. Je pensais avant que la valeur d'entrée de post execute était la valeur de retour de "do in background". Du moins c'était le cas avec les taches que j'ai utilisé auparavant mais je n'utilisais pas de tableau ou de liste...

Comment faire pour récupérer ce tableau hors de ma tache asynchrone dans une même activité ?
En gros ce que je veux faire c'est récupérer ce tableau de compte et afficher le nom de chaque compte dans une alertdialogue contenant une liste.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
public class accueil extends Activity {
 
	private Compte[]compteUtilisateurs = null;
	static final int COMPTE_DIALOG_ID = 998;
	private int idUtilisateur = 0;
 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.accueil);
	}
 
	@Override
	protected Dialog onCreateDialog(int id) {
		switch (id) {
 
		case COMPTE_DIALOG_ID:
 
			final List<Integer> mSelectedItems = new ArrayList<Integer>();	    
			List<CharSequence> mHelperNames = new ArrayList<CharSequence>();
 
			for (int i = 0 ; i<compteUtilisateurs.length; i++){
 
				mHelperNames.add(compteUtilisateurs[i].getNomCompte());
				System.out.println (compteUtilisateurs[i]);
				}
 
			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			builder.setTitle("Mes comptes")
 
			.setMultiChoiceItems(mHelperNames.toArray(new CharSequence[mHelperNames.size()]), null,
					new DialogInterface.OnMultiChoiceClickListener() {
				@Override
				public void onClick(DialogInterface dialog,
						int which, boolean isChecked) {
					if (isChecked) {
 
						mSelectedItems.add(which);
					} else if (mSelectedItems.contains(which)) {
 
						mSelectedItems.remove(Integer
								.valueOf(which));
					}
				}
			} );
 
			builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int id) {}
			})
			.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int id) {}
			});
 
			return builder.create();
		}
		return null;
	}
 
	/////////////////////////////////////Compte///////////////////////////////////////////////////
	public void choisircompte(View view){
		DepenseTask fraisTask = new DepenseTask();
		fraisTask.execute(idUtilisateur);
		//System.out.println(compteUtilisateurs[0]);
 
		///je lance ma tache pour recuperer le tableau de compte et l'utiliser dans le dialogue
		showDialog(COMPTE_DIALOG_ID);
 
 
	}
 
	///////////////////////////////////////Tache Asynk/////////////////////////////////////////////////////////
 
	class DepenseTask extends AsyncTask<Integer,Void,Compte[] >
	{
		@Override
		protected void onPreExecute() {
		}
 
		@Override
		protected Compte[] doInBackground(Integer... arg) {
			// TODO Auto-generated method stub
 
			SoapObject request4 = new SoapObject("", "");
			SoapSerializationEnvelope envelope4 = new SoapSerializationEnvelope(SoapEnvelope.VER11);
			envelope4.dotNet = true;
 
			request4.addProperty("idUtilisateur",idUtilisateur);
 
			envelope4.setOutputSoapObject(request4);
			HttpTransportSE androidHttpTransport4 = new HttpTransportSE("");
			try {
				androidHttpTransport4.debug = true;
				androidHttpTransport4.call("", envelope4);
 
				SoapObject resultsRequestSOAP4 = (SoapObject)envelope4.bodyIn;
 
				Compte[] compteUtilisateurs = new Compte[resultsRequestSOAP4.getPropertyCount()];
				for (int i = 0 ; i<compteUtilisateurs.length; i++){
 
					SoapObject soChild = (SoapObject)resultsRequestSOAP4.getProperty(i);
 
					Compte si = new Compte();
 
					si.setNomCompte(soChild.getPropertyAsString("nomCompte").toString());
					si.setTypeCompte(soChild.getPropertyAsString("typeCompte").toString());
					si.setIdCompte(Integer.parseInt(soChild.getPropertyAsString("idCompte").toString()));
					si.setSeuilMaxGeneralCompte(Double.parseDouble(soChild.getPropertyAsString("seuilMaxGeneralCompte").toString()));
					si.setSeuilMinGeneralCompte(Double.parseDouble(soChild.getPropertyAsString("seuilMinGeneralCompte").toString()));
 
 
					DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
					Date date = null;
					si.setDateCreationCompte(formatter.parse(soChild.getPropertyAsString("dateCreationCompte").toString()));
					date =  formatter.parse(soChild.getPropertyAsString("dateCreationCompte").toString());
					compteUtilisateurs[i]= si ;
					System.out.println (compteUtilisateurs[i]);
 
				}				
 
			} catch (Exception e) {
				e.printStackTrace();}
 
			return compteUtilisateurs;
		}
		@Override
		protected void onPostExecute(Compte[] result) {
 
			//System.out.println(result[0]);
 
 
		}
 
 
	}
 
 
}
Merci