Bonjour.
Savez vous quelle fonction est utilisé lorsqu'on quitte une sous activité, pour revenir a l'activité principale ?
Merci si vous pouvez m'aider.
Version imprimable
Bonjour.
Savez vous quelle fonction est utilisé lorsqu'on quitte une sous activité, pour revenir a l'activité principale ?
Merci si vous pouvez m'aider.
Heu... aucune c'est la base....
Sinon, si A a besoin d'être notifié spécifiquement du retour de B il faut utiliser startActivityForResultCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Activité A: startActivity(B) A.onSuspend() A.onStop() B.onCreate() B.onStart(); B.onResume() => on est dans B. Activité B: finish(); B.onSuspend() B.onStop() A.onStart() A.onResume() => on est de retour dans A.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Activité A: startActivityForResult(B) A.onSuspend() A.onStop() B.onCreate() B.onStart(); B.onResume() => on est dans B. Activité B: setResult(); finish(); B.onSuspend() B.onStop() A.onStart() A.onResume() A.onActivityResult() => on est de retour dans A.
Pour compléter Nicroman:
Tu peux notifier dans ton manifest ton activté parente
http://developer.android.com/guide/t...y-element.html
De ce fait il ira a l'activité parente lors d'un retour sur la navigation ;)Code:android:parentActivityName="string"
Elle est présente sur la library support faut juste lui ajouter une meta dataCitation:
this attribute was introduced in API Level 16.
Merci, Nicroman.
Ca ne marche pas...En fait j'essaye simplement d'écrire un score depuis ma sous activité pour l'afficher dans l'activité principale dès qu'on y revient.
Ca donne ceci dans ma sous activité :
- on écrit le score avant de quitter :
retour a mon activité principale, on lit le score avec onstart :Code:
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 @Override protected void onStop() { int val = gameContent.builder.score ; gameContent.destroyDrawingCache(); BufferedWriter writer = null; try { writer = new BufferedWriter(new OutputStreamWriter(openFileOutput("demo01", Context.MODE_PRIVATE))); writer.write("meilleur score : " + val ); } catch (Exception e) { e.printStackTrace(); } finally { if (writer != null) { try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } super.onStop(); }
Ce qui se passe, c'est que le score précédent s'affiche et non le dernier établi dans la sous activité.Code:
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 @Override protected void onStart() { BufferedReader input = null; try { input = new BufferedReader(new InputStreamReader(openFileInput("demo01"))); String line; StringBuffer buffer = new StringBuffer(); while ((line = input.readLine()) != null) { textView2 = (TextView)findViewById(R.id.score ); textView2.setTextSize(32); textView2.setText(line); //buffer.append(line); } } catch (Exception e) { e.printStackTrace(); } finally { if (input != null) { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } } super.onResume(); super.onStart(); }
Il faut que tu passes tes données depuis un Bundle qui sera récupérer dans ton activité principale.
Et non par un fichier ....
http://developer.android.com/referen.../Activity.html
Tu as la doc dans Starting Activities and Getting Results
Merci Feanorin.
J'ai du mal a saisir comment on fait ?
Bonjour,
Bah, à partir de l'activity principale tu lances l'activity secondaire avec la méthode startActivityForResult. Ensuite, dans l'activity secondaire, pour renvoyer le score vers l'activity principale tu enregistres ce score dans un Bundle et tu attaches ce bundle au resultat à à renvoyer. Pour finir, dans l'activity principale tu récupères le bundle renvoyé par l'activity secondaire puis tu le traites comme tu veux...
Christian,
Merci, MasterMbg...
Pourrais tu être un peut plus précis s.t.p ?
Comment fait-on pour enregistrer le score dans un Bundle et tu l'attacher a ce bundle au résultat à à renvoyer ?
As tu lu le lien donné par masterBG ?
http://developer.android.com/trainin...ts/result.html
On peut difficilement faire plus en terme d'explication ;)
Ok, merci, j'avou que j'ai un peu de mal avec l'anglais.
Alors si j'ai bien compris, j'attache une valeur dans l'activité principale :
ensuite je modifie cette valeur depuis ma sous activité :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Bundle extras; @Override protected void onCreate(Bundle savedInstanceState) { ... extras = new Bundle(); extras.putInt("key1", 7 ); ... } @Override public void onClick(View v) { Intent intent = new Intent(this, Activity2.class); intent.putExtras(extras); this.startActivityForResult(intent, 1); }
sauf que quand je reviens a mon activité principale, ma valeur reste celle du départ, a savoir 7...Code:
1
2
3
4
5
6
7
8
9
10
11
12 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle extras = getIntent().getExtras(); extras.putInt("key1", 1717 ); }
Ai-je oublié quelque chose ?
Merci si vous pouvez m'aider.