I'm looking for an answer for days now but still can't find it so let's hope someone will help me on this one.
I have X activities, and i would like to pass different variables from these activities to only ONE activity. When i use intent put extra it works well from 1 activity to the final activity, but when i use it from 2 activities to the final activity, the app is crashing down. Can someone tells me how to do it ?
Here's an exemple code of an X activity :
public class AkyluxClass extends Activity {
//Initialisation
double prix;
EditText longueur;
EditText largeur;
EditText quantite;
TextView total;
Button calcul, facturer, valider;
float coefficient;
public final static String COEF = "coefficient";
String test;
double num1, num2, num3, resultat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.akylux);
//Association layout / code
prix = 10.90;
longueur = (EditText) findViewById(R.id.longueur_akylux);
largeur = (EditText) findViewById(R.id.largeur_akylux);
quantite = (EditText) findViewById(R.id.quantite_akylux);
total = (TextView) findViewById(R.id.total_akylux);
calcul = (Button) findViewById(R.id.button_calcul_akylux);
facturer = (Button) findViewById(R.id.button_facturer);
valider = (Button) findViewById(R.id.valider_akylux);
coefficient = getPreferences(MODE_PRIVATE).getFloat(COEF, 1);
//Listener du bouton calcul
calcul.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
num1 = Double.parseDouble(longueur.getText().toString());
num2 = Double.parseDouble(largeur.getText().toString());
num3 = Double.parseDouble(quantite.getText().toString());
resultat = ((num1 * num2)/10000) * num3 * prix * coefficient;
total.setText(Double.toString(resultat));
if (num1 < 100) {
num1 = 100;
}
if (num2 < 100) {
num2 = 100;
}
if (num3 < 1) {
num3 = 1;
}
}
});
//Listener du bouton valider
valider.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String valStr = String.valueOf(resultat);
Intent intent = new Intent(AkyluxClass.this, DevisClass.class);
intent.putExtra("akylux", valStr);
startActivity(intent);
}
});
}
}
And here's the code of the final activity :
public class DevisClass extends Activity {
//Initialisation des variables
TextView valeur_akylux, valeur_blanc, valeur_carton, valeur_dibond, valeur_gris, valeur_pvc, total_Devis;
Button facturer;
double total_devis_double, resultat;
String total;
static AkyluxClass AkyluxClass;
static PvcClass PvcClass;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.devis);
//Association layout / code
facturer = (Button) findViewById(R.id.button_facturer);
valeur_akylux = (TextView) findViewById(R.id.valeur_akylux_devis);
valeur_blanc = (TextView) findViewById(R.id.valeur_blanc_devis);
valeur_carton = (TextView) findViewById(R.id.valeur_carton_devis);
valeur_dibond = (TextView) findViewById(R.id.valeur_dibond_devis);
valeur_gris = (TextView) findViewById(R.id.valeur_gris_devis);
valeur_pvc = (TextView) findViewById(R.id.valeur_pvc_devis);
total_Devis = (TextView) findViewById(R.id.total_Devis);
//On récupère la variable passée via l'intent de la première classe
String akylux_extra = (String) getIntent().getSerializableExtra("akylux");
//on l'attribue à un double pour avoir une valeur calculable
double valaky = Double.parseDouble(akylux_extra.trim());
//On l'affiche sur le label du layout
valeur_akylux.setText(Double.toString(valaky));
//Test : on l'attribue à un total
total_devis_double = Double.parseDouble(valeur_akylux.getText().toString());
//resultat = valaky + blanc + carton + dibond + gris + pvc;
resultat = valaky;
//On transforme le total en String
total = String.valueOf(total_devis_double);
//On affiche le String total
total_Devis.setText(total);
//Listener du bouton facturer
facturer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"rayan@eprint.fr"});
i.putExtra(Intent.EXTRA_SUBJECT, "Votre facture deviseur ePrint");
i.putExtra(Intent.EXTRA_TEXT , new String[]{"Voici le détail de votre facture : " , total, "total", "€"});
//i.putExtra(Intent.EXTRA_TEXT , new String[]{total});
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(DevisClass.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
}
});
}
}
Thank you for helping