Bonjour,
j'ai une question sur les intents je crois.
je voudrais updater une EditText qui n'est pas dans la même
Activity que le bouton est cliqué sans pour autant afficher cette
Activity voici un peu de code pour vous montrer ceci :
C'est mon Activity de départ elle semble bien rouler mais si il y a quelque chose de pas correct fait-moi le savoir ! :
ici c'est mon activity avec le bouton qui déclanche ma fonction :
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 public class MainActivity extends TabActivity { private TabHost mTabHost; //On déclare toutes les variables dont on aura besoin Button cmdadd; private static final int CODE_DE_MON_ACTIVITE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Resources res = getResources(); mTabHost = getTabHost(); TabHost.TabSpec spec; Intent intent; // tab info intent = new Intent(this,InfoActivity.class); spec = mTabHost.newTabSpec("Info") .setIndicator("Info",res.getDrawable(R.drawable.tabinfo)) .setContent(intent); mTabHost.addTab(spec); // tab info intent = new Intent(this,ResultActivity.class); spec = mTabHost.newTabSpec("Result") .setIndicator("Result",res.getDrawable(R.drawable.tab_mresult)) .setContent(intent); mTabHost.addTab(spec); // tab info intent = new Intent(this,SettingActivity.class); spec = mTabHost.newTabSpec("Setting") .setIndicator("Setting",res.getDrawable(R.drawable.tab_setting)) .setContent(intent); mTabHost.addTab(spec); mTabHost.setCurrentTab(0); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
ensuite pour finir l'activity avec le EditText que j'aimerais mettre a jour :
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 public class InfoActivity extends Activity { //On déclare toutes les variables dont on aura besoin Button cmdadd; EditText mass; private double resultbac; private int cptdrink = 0; private int intmass = 0; private float mlalc = 0; private float calmass = 0; private float result = 0; Intent intent; private static final int CODE_DE_MON_ACTIVITE = 2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_info); Toast.makeText(getApplicationContext(), "InfoActivity",Toast.LENGTH_LONG).show(); //On récupère tout les éléments de notre interface graphique grâce aux ID cmdadd = (Button) findViewById(R.id.btnadd); mass = (EditText) findViewById(R.id.txtmass); //On attribut un écouteur d'évènement à tout les boutons cmdadd.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { adddrink(); } private void adddrink() { intmass = Integer.parseInt(mass.getText().toString()); cptdrink = cptdrink + 1; mlalc = (float) ((cptdrink * 17) * 0.8); calmass = (float) (intmass * 0.7); result = mlalc / calmass; //On créé un objet Bundle, c'est ce qui va nous permetre d'envoyer des données à l'autre Activity Bundle objetbundle = new Bundle(); //Cela fonctionne plus ou moins comme une HashMap, on entre une clef et sa valeur en face objetbundle.putFloat("bac", result); intent = new Intent(InfoActivity.this,ResultActivity.class); //On affecte à l'Intent le Bundle que l'on a créé intent.putExtras(objetbundle); // On démarre l'autre Activity startActivity(intent); } }); } }
comme première question je me demandais si cela est possible et comment
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 public class ResultActivity extends Activity { //On déclare toutes les variables dont on aura besoin float fbac; EditText bac; TimePicker tp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Toast.makeText(getApplicationContext(),"ResultActivity",Toast.LENGTH_LONG).show(); setContentView(R.layout.activity_result); //on récupère tous les éléments bac = (EditText) findViewById(R.id.txtbac); tp = (TimePicker) findViewById(R.id.drivetime); //On récupère l'objet Bundle envoyé par l'autre Activity Bundle objetbunble = this.getIntent().getExtras(); //On récupère les données du Bundle if (objetbunble != null && objetbunble.containsKey("bac")) { fbac = objetbunble.getFloat("bac"); bac.setText(Float.toString(fbac)); } } }
ajouter
dans mon InfoActivity même si l'Edittext est dans ResultActivity ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 bac = (EditText) findViewById(R.id.txtbac); EditText bac; bac.setText(Float.toString(result));
ou sinon comment puis-je faire avec les intents pour que l'activity reste en background ?
Merci d'avance !
Partager