Also volle Aufnahme, ich bin ein bisschen autodidaktisch, wenn es um Android Dev geht, also mache ich vielleicht alles falsch. Daher bin ich offen für Vorschläge! Ich versuche im Wesentlichen, eine Aufgabe, die ich jeden Tag mache, im Wesentlichen zu automatisieren.Übergabe eines Layouts und dessen Inhalte zwischen Aktivitäten
Frage: Wie ein LinearLayout übergeben wird, ist Inhalt intakt, zwischen Aktivitäten?
So habe ich diese zweite Aktivität, genannt reportGeneratorActivity In dieser Aktivität gibt es ein lineares Layout direkt unter der Berichtsvorschau.
Das Linear-Layout selbst wird in einer separaten XML-Datei als previewplate.xml
Jetzt Funktionen dieser Aktivität definiert, wenn Sie Text in die oberen Felder legen es die Vorschau unten aktualisiert. Das bringt mich zu der Mauer, die ich treffe. Das Ziel ist, diese Vorschauplatte zu nehmen und sie zu meiner Hauptaktivität hinzuzufügen, die ich rootActivity in dem weißen Bereich genannt habe, der ein lineares Layout selbst ist, das rootWorkingLayout genannt wird.
Nun ist die Strings aus dem Text alle auf dem vorübergehend in reportGeneratorActivity gespeicherten Punkt Ich tue dies, wenn die Taste gedrückt wird:
public void beginReport (View view) {
//Bundle the Preview
Bundle previewBundle = new Bundle();//Create the Bundle
previewBundle.putString("date", dateHolder);
previewBundle.putString("client", clientNameHolder);
previewBundle.putString("machine", machineTypeHolder);
previewBundle.putString("serial#", serialNumberHolder);
previewBundle.putString("notes", notesHolder);
// Prepare The Intent
Intent previewPasser = new Intent(this, rootActivity.class);
previewPasser.putExtras(previewBundle); // Add the Bundle to Intent
//Send Preview to Root
startActivity(previewPasser);
//Send Preview to History
//Send User to Decision Tree
}
Von dem, was ich verstehe, ich habe in Bundle alle Fäden setzen previewBundle, fügte dann das Bundle der previewPasser-Absicht hinzu und schickte die Absicht zurück an rootActivity.
In rootActivity innerhalb der onCreate Funktion ich diesen Code platziert habe:
hierBundle previewReceiver = getIntent().getExtras();
//If There is a Bundle, Process it
if(previewReceiver != null) {
newPreview(previewReceiver);
}
Das Ziel ist es, die Absicht zu packen, und greift das Bündel übergibt es dann zu meiner newPreview Funktion (derzeit leer) das wird dupliziere die fertige Vorschau von report_generator_activity und zeige sie im linearen Layout: rootWorkinglayout auf identische Weise an.
Es ist dieser letzte Schritt, dass ich eine Mauer anschlagen werde, ich kann nur annehmen, dass es einen einfacheren Weg gibt, vielleicht eine Möglichkeit, das Layout und seinen Inhalt zu duplizieren und es zu senden? Oder wenn ich das funktional mache, wie entpacke ich die Daten auf identische Weise?
Bitte verzeihen Sie die Ausführlichkeit und das Fehlen von Bildern, da ich ein neues Mitglied der Gemeinschaft bin.
Edit # 1: Als Reaktion auf SoroushA der ausgezeichnete Antwort, die mich auf dem richtigen Weg gebracht hat, ich habe meine newPreview Methode eingestellt, um dies:
public void newPreview (Bundle previewReceiver) {
//Extract Strings from Bundle
String date = previewReceiver.getString("date");
String client = previewReceiver.getString("client");
String machine =previewReceiver.getString("machine");
String serialNum = previewReceiver.getString("serial#");
//Create New Inflater
LayoutInflater previewInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View previewLayout = previewInflater.inflate(R.layout.previewplate, null);
//Add previewLayout to rootWorkingLayout
rootWorkingLayout.addView(previewLayout);
}
Derzeit Ich versuche nur, um Die graue Box des Layouts der Vorschau, die als Hintergrund angezeigt wird, ist in einer eigenen XML-Datei definiert. Es passiert jedoch nichts, wenn ich aufgrund meines eigenen Fehlers klar durch den Prozess gehe. Ich bin mir nicht sicher, welchen Schritt ich vermisse.
Vielen Dank im Voraus!
Sie sollten die Werte für jeden Container senden. Um es einfach zu machen, erstellen Sie eine benutzerdefinierte Ansicht für die Verwendung beider Aktivitäten. Außerdem sollten Sie keine Daten in das Bundle laden. Einige Telefone haben dafür nicht viel Speicher –