Update dans une autre Activity ?
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 ! :
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 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;
}
} |
ici c'est mon activity avec le bouton qui déclanche ma fonction :
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 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);
}
});
}
} |
ensuite pour finir l'activity avec le EditText que j'aimerais mettre a jour :
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
| 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));
}
}
} |
comme première question je me demandais si cela est possible et comment
ajouter
Code:
1 2 3
| bac = (EditText) findViewById(R.id.txtbac);
EditText bac;
bac.setText(Float.toString(result)); |
dans mon InfoActivity même si l'Edittext est dans ResultActivity ?
ou sinon comment puis-je faire avec les intents pour que l'activity reste en background ?
Merci d'avance !