Update dans une autre activity ?

volcom20 Messages postés 15 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 6 janvier 2013 - 3 janv. 2013 à 18:49
volcom20 Messages postés 15 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 6 janvier 2013 - 3 janv. 2013 à 22:43
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 qui 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 ! :

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 :

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 :

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
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 !

2 réponses

volcom20 Messages postés 15 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 6 janvier 2013
3 janv. 2013 à 19:54
j'ai transformé ma procédure adddrink et fonction mais
je me demandais quand je fait :

startActivityForResult(intent);

ou startActivity(intent);

l'activité s'affiche est-ce qu'il y a un moyen de la laisser en background ?

et je perds mais onglet (tabs) que j'ai créer dans
mon activité de départ (elle est peut-être détruite) dois-je refaire les onglet ?

ensuite l'activity (InfoActivity) semble être nouvelle et non celle là afficher pas mes tabs. est-ce qu'il pourrais y avoir un problème d'héritage ?

merci
0
volcom20 Messages postés 15 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 6 janvier 2013
3 janv. 2013 à 22:43
Salut !

pour passer d'une tab à une autre j'ai implémenté :


public void onTabChanged(String tabName) {
    if(tabName.equals("Info")) {
        //do something
    	Toast.makeText(getApplicationContext(),"tabinfo",Toast.LENGTH_LONG).show(); 
 
    }
    else if(tabName.equals("Result")) {
 
        //do something
    	Toast.makeText(getApplicationContext(),"tabresult",Toast.LENGTH_LONG).show();
 
    }
    else if(tabName.equals("Setting")) {
 
        //do something
    	Toast.makeText(getApplicationContext(),"tabsetting",Toast.LENGTH_LONG).show();
    }
 
}


mais je suis incapable de transférer les valeurs et updater les champ texte de l'autre activity sans perdre mais tabs .
0
Rejoignez-nous