Je reformule : tout le code qui dépend directement du retour de l'asyncTask doit être mis dans populate(). Le reste tu peux le laisser dans onCreate()
Je reformule : tout le code qui dépend directement du retour de l'asyncTask doit être mis dans populate(). Le reste tu peux le laisser dans onCreate()
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS
Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android
Mais le tuto developpez.com n'a jamais parlé d'interface. Ce n'est pas obligatoire.
Et oui, le setter() dont tu parles c'est populate() !!
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS
Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android
Au final c'est se que je fais depuis le début.. mais ça m'arrange pas pour faire des test.. tel que stocker les coordonnées dans une liste si l'envoi n'a pas pu se faire...
Ah peut étre que finalement je peux stocker dans une liste en mettant un try catch dans l'asyncTask et vérifier que si il y a eu une erreur d'envoi alors je stock les coordonnées dans une liste ?
Ok alors je vais le faire sans interface..
J'ai mis tout en place et je m'aperçois que depuis 20 minutes je cherche m'on erreur et je ne sais pas pourquoi mais cela vient de mon Toast --'.
Je ne comprend pas du tout pourquoi dès lorsqu'il arrive au Toast il crash..
Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public void setRetourRequetePostIdNum(JSONObject resulta) { /*try { retvalId= resulta.getString("id"); retvalTel= resulta.getString("tel"); } catch (JSONException e) { e.printStackTrace(); }*/ Toast.makeText(getApplicationContext(),"ID et Num envoyé", Toast.LENGTH_LONG).show(); }
Bizarre. setRetourRequetePostIdNum() est bien une méthode de ta classe Activity ?
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS
Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android
Oui voici le code du AscynTask :
et voici l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 @Override public void onPostExecute(JSONObject result) { objParent.setRetourRequetePostIdNum(result); //Assigning call back interfacethrough constructor }
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 05-25 20:47:27.191 3034-3050/com.example.iris1.sdrp_top_1 D/OpenGLRenderer﹕ Render dirty regions requested: true 05-25 20:47:27.210 3034-3034/com.example.iris1.sdrp_top_1 D/﹕ HostConnection::get() New Host Connection established 0xa68b3150, tid 3034 05-25 20:47:27.304 3034-3034/com.example.iris1.sdrp_top_1 D/Atlas﹕ Validating map... 05-25 20:47:27.396 3034-3050/com.example.iris1.sdrp_top_1 D/﹕ HostConnection::get() New Host Connection established 0xa68b3630, tid 3050 05-25 20:47:27.529 3034-3050/com.example.iris1.sdrp_top_1 I/OpenGLRenderer﹕ Initialized EGL, version 1.4 05-25 20:47:27.547 3034-3050/com.example.iris1.sdrp_top_1 D/OpenGLRenderer﹕ Enabling debug mode 0 05-25 20:47:27.578 3034-3050/com.example.iris1.sdrp_top_1 W/EGL_emulation﹕ eglSurfaceAttrib not implemented 05-25 20:47:27.578 3034-3050/com.example.iris1.sdrp_top_1 W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa68aa360, error=EGL_SUCCESS 05-25 20:47:27.735 3034-3050/com.example.iris1.sdrp_top_1 W/EGL_emulation﹕ eglSurfaceAttrib not implemented 05-25 20:47:27.735 3034-3050/com.example.iris1.sdrp_top_1 W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa68aa380, error=EGL_SUCCESS 05-25 20:47:28.109 3034-3034/com.example.iris1.sdrp_top_1 D/AndroidRuntime﹕ Shutting down VM 05-25 20:47:28.109 3034-3034/com.example.iris1.sdrp_top_1 E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.iris1.sdrp_top_1, PID: 3034 java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference at android.widget.Toast.<init>(Toast.java:101) at android.widget.Toast.makeText(Toast.java:250) at com.example.iris1.sdrp_top_1.MainActivity.setRetourRequetePostIdNum(MainActivity.java:192) at com.example.iris1.sdrp_top_1.MyAsyncTaskPostIdNum.onPostExecute(MyAsyncTaskPostIdNum.java:41) at com.example.iris1.sdrp_top_1.MyAsyncTaskPostIdNum.onPostExecute(MyAsyncTaskPostIdNum.java:22) at android.os.AsyncTask.finish(AsyncTask.java:632) at android.os.AsyncTask.access$600(AsyncTask.java:177) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 05-25 20:47:30.672 3034-3034/com.example.iris1.sdrp_top_1 I/Process﹕ Sending signal. PID: 3034 SIG: 9
Il y a quelque chose que tu ne m'as pas montré dans le code de setRetourRequetePostIdNum(). C'est pas possible autrement...
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS
Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android
si :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public void setRetourRequetePostIdNum(JSONObject resulta) { /*try { retvalId= resulta.getString("id"); retvalTel= resulta.getString("tel"); } catch (JSONException e) { e.printStackTrace(); }*/ Toast.makeText(getBaseContext(),"ID et Num envoyé", Toast.LENGTH_LONG).show(); }
Essayes this.getApplicationContext() à la place de getBaseContext()
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS
Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android
ça crash...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Toast.makeText(this.getApplicationContext(),"ID et Num envoyé", Toast.LENGTH_LONG).show();
Postes le code entier de ton Asyntask et de ton Activity sur le forum stp. Il y a qqchose qui m'échappe
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS
Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android
AsyncTask :
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 public class MyAsyncTaskPostIdNum extends AsyncTask<String, JSONObject, JSONObject> { InputStream inputStream = null; String result=""; String adresseUrlPost; String responseBody; HttpResponse response; JSONObject myObject; String content; MainActivity objParent = new MainActivity();//Call back public JSONObject doInBackground(String... params) { // TODO Auto-generated method stub return postData(params[0], params[1]); } @Override public void onPostExecute(JSONObject result) { objParent.setRetourRequetePostIdNum(result); //Assigning call back interfacethrough constructor } public JSONObject postData(String telephoneP, String mdpP) { try { //Composition de l'adresse url avec la valeur de l'edit text et du num de téléphone récupéré adresseUrlPost="http://10.0.2.2:10446/api/PersoSurveille"; // 1. create HttpClient HttpClient httpclient = new DefaultHttpClient(); // 2. make POST request to the given URL HttpPost httpPost = new HttpPost(adresseUrlPost); String json = ""; // 3. build jsonObject JSONObject jsonObject = new JSONObject(); jsonObject.accumulate("telephone", telephoneP); jsonObject.accumulate("password", mdpP); // 4. convert JSONObject to JSON to String json = jsonObject.toString(); // ** Alternative way to convert Person object to JSON string usin Jackson Lib // ObjectMapper mapper = new ObjectMapper(); // json = mapper.writeValueAsString(person); // 5. set json to StringEntity StringEntity se = new StringEntity(json); // 6. set httpPost Entity httpPost.setEntity(se); // 7. Set some headers to inform server about the type of the content httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-type", "application/json"); // 8. Execute POST request to the given URL HttpResponse httpResponse = httpclient.execute(httpPost); // 9. receive response as inputStream inputStream = httpResponse.getEntity().getContent(); // 10. convert inputstream to string if (inputStream != null) result = convertInputStreamToString(inputStream); else result = "probleme, ne fonctionne pas"; } catch (Exception e) { Log.d("InputStream", e.getLocalizedMessage()); } //11. convertion string en JSONObject try { myObject = new JSONObject(result); } catch (JSONException e) { e.printStackTrace(); } // 12. return result return myObject; } private static String convertInputStreamToString(InputStream inputStream) throws IOException { BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream)); String line = ""; String result=""; int i=0; while((line = bufferedReader.readLine()) != null) { result += line; } inputStream.close(); return result; } }
Activity :
Voila Merci
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400 public class MainActivity extends Activity { static Intent intent; //Définition d'un instance de LocationManager LocationManager monLocationManager; //Récupération du fournisseur de contenu GPS private String monLocationProvider = LocationManager.GPS_PROVIDER; String[]menutitles; TypedArray menuIcons; // nav drawer title private CharSequence mDrawerTitle; private CharSequence mTitle; private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; private List<DescriptionFragment> rowItems; private FragmentsAdapte adapter; TelephonyManager tm; static String numTel; static String date; static String valNumResponsable; static String retval=""; static String retvalTel=""; static String retvalId=""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /////////////////////////////////////////// /////////// Partie interface ///////////// ////////////////////////////////////////// mTitle = mDrawerTitle = getTitle(); menutitles = getResources().getStringArray(R.array.titles); menuIcons = getResources().obtainTypedArray(R.array.icons); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.slider_list); rowItems = new ArrayList<DescriptionFragment>(); for (int i = 0; i < menutitles.length; i++) { DescriptionFragment items = new DescriptionFragment(menutitles[i], menuIcons.getResourceId(i, -1)); rowItems.add(items); } menuIcons.recycle(); adapter = new FragmentsAdapte(getApplicationContext(), rowItems); mDrawerList.setAdapter(adapter); mDrawerList.setOnItemClickListener(new SlideitemListener()); // enabling action bar app icon and behaving it as toggle button //probleme ici getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); //avec ActionBarDrawerToggle version 7 mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.string.app_name, R.string.app_name){ public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); invalidateOptionsMenu(); } public void onDrawerOpened(View view) { getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); if (savedInstanceState == null) { // on first time display view for first nav item updateDisplay(0); } ////////////////////// // PARTIE INTELIGENTE ////////////////////// //Recherche du n° de téléphone //Récupération du numéro de téléphone lié au smartphone tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); numTel=tm.getLine1Number(); //Modifie le numéro de téléphone numTel=transfoNum(numTel); /** Récupère le locationManager qui gère la localisation */ monLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //Test si le GPS est activé ou non verifGPS(); //appel de la fonction dateDuJour date = this.dateJour(); } /** * Exécuté lorsque l'activité devient visible à l'utilisateur. * * La fonction onStart() est suivie de la fonction onResume(). */ @Override protected void onStart() { super.onStart(); Toast.makeText(getApplicationContext(),"Start", Toast.LENGTH_LONG).show(); MyAsyncTaskPostIdNum objPostIdNum = new MyAsyncTaskPostIdNum(); //execution de la requete post pour obtenir l'id et le numéro du repsonsable objPostIdNum.execute(numTel, "xxxxx"); // Lance explicitement le service MyService // intent = new Intent(this, Service_GPS.class); //startService(intent); } public void setRetourRequetePost(JSONObject result) { try { retval=result.getString("val"); } catch (JSONException e) { e.printStackTrace(); } Toast.makeText(this.getApplicationContext(),"Coordonnées envoyées", Toast.LENGTH_LONG).show(); } public void setRetourRequetePostIdNum(JSONObject resulta) { /*try { retvalId= resulta.getString("id"); retvalTel= resulta.getString("tel"); } catch (JSONException e) { e.printStackTrace(); }*/ Toast.makeText(this.getApplicationContext(),"ID et Num envoyé", Toast.LENGTH_LONG).show(); } public void verifGPS() { /** Test si le gps est activé ou non */ if (!monLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { /** on lance notre activity (qui est une dialog) */ Intent localIntent = new Intent(this, PermissionGps.class); localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(localIntent); } } public static String dateJour() { // Récupére une instance du Calandrier Calendar calendrier = Calendar.getInstance(); SimpleDateFormat fdate = new SimpleDateFormat("yyyy/MM/dd kk:mm:ss"); return ( fdate.format(calendrier.getTime())); } public String transfoNum(String numero) { //+336 alors if (numero.charAt(0)=='+') { numero=numero.substring(1,12); // num = à num avec le + en moins } return numero; } public static void miseAjourCoordonnees(Location location) { Service_GPS.latitude = location.getLatitude(); Service_GPS.longitude = location.getLongitude(); } public void envoiSMSAlerte(int message ){ //decoupIDNum = objGet.getval().split(" "); //Toast affichage num de téléphone récupéré String Newligne = System.getProperty("line.separator"); // ligne d'espace String gps=""; //Composition du message qui sera envoyé à la personne résponsable if (message ==0) { gps = "Vous recevez une ALERTE du " + tm.getLine1Number() + " ses coordonnées GPS sont : " + Newligne + " Longitude : " + Service_GPS.longitude + Newligne + " Latitude : " + Service_GPS.latitude; } else if (message == 1) { gps = "ALERTE !!! "+Newligne+"La personne que vous surveillez qui pour numéro :" + tm.getLine1Number() + " est SORTIE de ça ZONE et " + "ses coordonnées GPS actuelles sont : " + Newligne + " Longitude : " + Service_GPS.longitude + Newligne + " Latitude : " + Service_GPS.latitude; } //Si le numéro est supérieur à 4 caractères et que le message n'est pas vide on lance la procédure d'envoi if(tm.getLine1Number().length()>= 4 && gps.length() > 0){ //Grâce à l'objet de gestion de SMS (SmsManager) que l'on récupère via la méthode static getDefault() //On envoie le SMS à l'aide de la méthode sendTextMessage SmsManager.getDefault().sendTextMessage(valNumResponsable, null, gps, null, null); Toast.makeText(getApplicationContext(), "Message envoyé", Toast.LENGTH_SHORT).show(); }else { //On affiche un petit message d'erreur dans un Toast Toast.makeText(getApplicationContext(), "Enter le numero et/ou le message", Toast.LENGTH_SHORT).show(); } } public void clikBtnAlerte(View v) { //Envoi sms alerte envoiSMSAlerte(0); } public void clikOuSuisJe(View v) { Uri uri = Uri.parse("geo:"+ Double.toString(Service_GPS.latitude)+","+Double.toString(Service_GPS.longitude)); startActivity(new Intent(Intent.ACTION_VIEW,uri)); } /** * Exécuté que l'activité arrêtée via un "stop" redémarre. * * La fonction onRestart() est suivie de la fonction onStart(). */ @Override protected void onRestart() { super.onRestart(); Toast.makeText(getApplicationContext(),"Restart", Toast.LENGTH_LONG).show(); } /** * Exécutée a chaque passage en premier plan de l'activité. * Ou bien, si l'activité passe à nouveau en premier (si une autre activité était passé en premier plan entre temps). * * La fonction onResume() est suivie de l'exécution de l'activité. */ @Override protected void onResume() { super.onResume(); Toast.makeText(getApplicationContext(),"Resume", Toast.LENGTH_LONG).show(); } /** * La fonction onPause() est suivie : * - d'un onResume() si l'activité passe à nouveau en premier plan * - d'un onStop() si elle devient invisible à l'utilisateur * * L'exécution de la fonction onPause() doit être rapide, * car la prochaine activité ne démarrera pas tant que l'exécution * de la fonction onPause() n'est pas terminée. */ @Override protected void onPause() { super.onPause(); Toast.makeText(getApplicationContext(),"Pause", Toast.LENGTH_LONG).show(); } /** * La fonction onStop() est exécutée : * - lorsque l'activité n'est plus en premier plan * - ou bien lorsque l'activité va être détruite * * Cette fonction est suivie : * - de la fonction onRestart() si l'activité passe à nouveau en premier plan * - de la fonction onDestroy() lorsque l'activité se termine ou bien lorsque le système décide de l'arrêter */ @Override protected void onStop() { super.onStop(); Toast.makeText(getApplicationContext(),"Stop", Toast.LENGTH_LONG).show(); } /** * Cette fonction est exécutée lorsque l'activité se termine ou bien lorsque * le système décide de l'arrêter. * * La fonction onCreate() devra à nouveau être exécutée pour obtenir à nouveau l'activité. */ @Override protected void onDestroy() { super.onDestroy(); Toast.makeText(getApplicationContext(),"Destroy", Toast.LENGTH_LONG).show(); } //Handling ListView Item click listener //Create a inner class called SlideitemListener , Inside the MainActivity class , //and override onItemClick method inside this method call updateDisplay() //method by passing position as a parameter to it and then inside updateDisplay //by knowing the position clicked ,we are replacing the current fragment with //the respective fragment associated with the items of listview . //you can find the updateDisplay method inside the MainActivity class . class SlideitemListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { updateDisplay(position); } } private void updateDisplay(int position) { Fragment fragment = null; switch (position) { case 0: fragment = new HomeFragment(); break; case 1: fragment = new ParametresFragment(); break; case 2: fragment = new InfosFragment(); break; default: break; } if (fragment != null) { FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit(); // update selected item and title, then close the drawer setTitle(menutitles[position]); mDrawerLayout.closeDrawer(mDrawerList); } else { // error in creating fragment Log.e("MainActivity", "Error in creating fragment"); } } @Override public void setTitle(CharSequence title) { mTitle = title; //getActionBar().setTitle(mTitle); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // toggle nav drawer on selecting action bar app icon/title if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } // Handle action bar actions click switch (item.getItemId()) { /*case : R.id.action_settings return true;*/ default : return super.onOptionsItemSelected(item); } } /*** * Called when invalidateOptionsMenu() is triggered */ @Override public boolean onPrepareOptionsMenu(Menu menu) { // if nav drawer is opened, hide the action items boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); //menu.findItem(R.id.action_settings).setVisible(!drawerOpen); return super.onPrepareOptionsMenu(menu); } /** * When using the ActionBarDrawerToggle, you must call it during * onPostCreate() and onConfigurationChanged()... */ @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); // Sync the toggle state after onRestoreInstanceState has occurred. mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Pass any configuration change to the drawer toggles mDrawerToggle.onConfigurationChanged(newConfig); } }
C'est quoi cette bouse ? : MainActivity objParent = new MainActivity();//Call back
La référence à l'Activity doit être passée à l'AsyncTask via son constructeur. Suit le tuto bordel !
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS
Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android
Dans ton Activity, fais ce simple changement :
Dans ton AsyncTask, simplifies ce champs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part AsyncTaskPostIdNum objPostIdNum = new MyAsyncTaskPostIdNum(this);
Et rajoutes ce constructeur où tu veux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part MainActivity objParent;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public MyAsyncTaskPostIdNum(MainActivity p) { this.objParent = p; }
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS
Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android
et pour celui la qui lui est présent dans mon service et qui doit comporter l'objet de la classe MainActivity je fais comment ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part objPost = new MyAsyncTaskPost(la il manque le this si j'aurais été dans la mainActivity); // instancier la classe
Service ? quel service ? tu ne m'as jamais parlé de service jusqu'ici.
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS
Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager