私は今のところ日中の回答を探していますが、それでも見つからないので、誰かが私を助けてくれることを願っています。Androidアプリのアクティビティ間で変数を渡す
私はXアクティビティを持っています。これらのアクティビティから異なる変数を1つのアクティビティに渡したいと思います。私はintentを使って余分なものを使うと、1つのアクティビティから最終的なアクティビティまでうまく動作しますが、2つのアクティビティから最終的なアクティビティまで使用すると、アプリケーションがクラッシュします。誰かが私にそれをする方法を教えてもらえますか?ここで
はX活動のexempleコードです:
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);
}
});
}
}
そして、ここでは、最終的なアクティビティのコードは次のとおりです。それは1で作業している場合は
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[]{"[email protected]"});
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彼らはほとんどすべて最初のものと同じです – Oxy180