Ich mache eine Formular-App, die Informationen sammelt und in einer E-Mail sendet. MainActivity sammelt Telefonnummer #, dann eine Warnmeldung Aktivität, dann Name Aktivität etc. Das Problem, das ich habe, ist das Senden der Daten aus den EditText Felder zu den endgültigen AgreementActivity zu senden als eine E-Mail ist nicht für mich arbeiten. Ich habe überall gesucht, aber ich kann nicht herausfinden, wie man den Benutzer zur nächsten Aktivität schickt, während er die Eingabedaten an die abschließende Vereinbarung sendet, damit er in einer E-Mail gesendet werden kann.Verwendung mehrerer Absichten mit verschiedenen Aktivitäten und endgültigen E-Mail-Absichten
Das ist was ich bisher habe.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Find the next button
final Button next1 = (Button) findViewById(R.id.button);
// Find the Edit Text Field to input Phone Number
final EditText phoneField = (EditText) findViewById(R.id.edit_text_phone);
// Set a click listener on the next button
next1.setOnClickListener(new View.OnClickListener() {
// The code in this method will be executed when the next1 Button is clicked on.
@Override
public void onClick(View view) {
// sends data collected from edit text box to be sent to final page so it can be
// sent in an email message.
Intent phoneNumber = new Intent(MainActivity.this, AgreementActivity.class);
phoneNumber.putExtra("phoneMessage", phoneField.getText().toString());
startActivity(phoneNumber);
//starts next activity
Intent nextButton = new Intent(MainActivity.this, Warning.class);
startActivity(nextButton);
}
});
}
}
Dies ist die letzte Vereinbarung Aktivität, wo es eine E-Mail senden. Aber das Endergebnis in der E-Mail-Betreffzeile "Ihre Telefonnummer ist null"
public class AgreementActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.agreement_activity);
// Find the submit button
final Button submit = (Button) findViewById(R.id.button6);
// This is the input from user for phone number field
final Bundle phoneNumber = getIntent().getExtras();
// Set a click listener on that View
submit.setOnClickListener(new View.OnClickListener() {
// The code in this method will be executed when the Submit Button is clicked on.
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.getBundleExtra("phoneMessage");
intent.putExtra(Intent.EXTRA_SUBJECT, "Your Phone Number is " + phoneNumber);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
});
}
}
Unklar, was dort gefragt wird. –
Dies wäre viel einfacher, wenn Sie eine Aktivität statt drei hätten. Das heißt ... in 'phoneNumber.putExtra '(" phoneMessage ", phoneField.getText(). ToString())' fügen Sie dem 'Intent' einen zusätzlichen Namen namens' phoneMessage' hinzu. Der Wert ist ein 'String'. In 'intent.getBundleExtra (" phoneMessage ")' versuchen Sie, ein 'Bündel' mit dem Namen' phoneMessage' als Extra zu erhalten. Es gibt jedoch kein Bündel namens 'phoneMessage'. Wie [Kehinde darauf hinweist] (https://stackoverflow.com/a/48029750/115145), müssen Sie 'getStringExtra()', nicht 'getBundleExtra()' verwenden. – CommonsWare
Ja, ich würde zustimmen, dass eine Aktivität, die gescrollt wurde einfacher gewesen wäre, aber da ich wollte, dass die Benutzer Informationen auf dem Formular einen Bildschirm nach dem anderen eingeben, machte ich mehrere Aktivitäten. Ich bin mir sicher, dass es einen besseren Weg gibt. Ich habe jedoch nur für 1 Monat codiert. –