【发布时间】:2017-10-10 02:45:11
【问题描述】:
我一直在寻找答案,但仍然找不到,所以希望有人能帮助我解决这个问题。
我有 X 个活动,我想将这些活动的不同变量传递给一个活动。当我使用 Intent put extra 时,它从 1 个活动到最终活动都运行良好,但是当我从 2 个活动到最终活动使用它时,应用程序崩溃了。有人可以告诉我该怎么做吗?
这是一个 X 活动的示例代码:
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);
}
});
}
}
这是最终活动的代码:
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();
}
}
});
}
}
感谢您的帮助
【问题讨论】:
-
也添加其他活动代码。
-
错误日志也会有所帮助。
-
@MilapPancholi 他们几乎都和第一个一样
标签: java android variables android-activity