Wie übergebe ich einen Wert von einem Bildschirm zum vorherigen?
Betrachten Sie diesen Fall: Ich habe zwei Aktivitäten. Der erste Bildschirm hat eine TextView
und eine Schaltfläche und die zweite Aktivität hat eine EditText
und eine Schaltfläche.
Wenn ich auf die erste Schaltfläche klicke, muss sie zur zweiten Aktivität wechseln und hier muss der Benutzer etwas in das Textfeld eingeben. Wenn er auf dem zweiten Bildschirm die Taste drückt, sollten die Werte aus dem Textfeld zur ersten Aktivität verschoben und in der ersten Aktivität angezeigt werden TextView
.
android
android-activity
Kumar
quelle
quelle
Antworten:
Um Aktionen zu erfassen, die für eine Aktivität in einer anderen ausgeführt werden, sind drei Schritte erforderlich.
Starten Sie die sekundäre Aktivität (Ihre Aktivität "Text bearbeiten") als Unteraktivität, indem Sie sie
startActivityForResult
aus Ihrer Hauptaktivität verwenden.Innerhalb der Unteraktivität müssen Sie nicht nur die Aktivität schließen, wenn ein Benutzer auf die Schaltfläche klickt, sondern eine neue Absicht erstellen und den eingegebenen Textwert in das Extras-Bundle aufnehmen. So geben Sie es vor dem Aufruf an den übergeordneten Anruf zurück
setResult
,finish
um die sekundäre Aktivität zu schließen.Der letzte Schritt ist die aufrufende Aktivität: Überschreiben
onActivityResult
, um auf Rückrufe aus der Texteingabe Aktivität zu warten. Holen Sie sich das Extra aus der zurückgegebenen Absicht, um den Textwert zu erhalten, den Sie anzeigen sollten.quelle
new Intent(null);
es "zu zweideutig" war und ich es ändern musstenew Intent();
.Es gibt verschiedene Möglichkeiten, auf Variablen oder Objekte in anderen Klassen oder Aktivitäten zuzugreifen.
Eine Datenbank
B. gemeinsame Einstellungen.
C. Objektserialisierung.
D. Eine Klasse, die allgemeine Daten enthalten kann, kann als allgemeine Dienstprogramme bezeichnet werden, die von Ihnen abhängen.
E. Weitergabe von Daten über Absichten und Paketschnittstelle.
Dies hängt von Ihren Projektanforderungen ab.
A. Datenbank
SQLite ist eine Open Source-Datenbank, die in Android eingebettet ist. SQLite unterstützt standardmäßige relationale Datenbankfunktionen wie SQL-Syntax, Transaktionen und vorbereitete Anweisungen.
Tutorials - http://www.vogella.com/articles/AndroidSQLite/article.html
B. Gemeinsame Einstellungen
Angenommen, Sie möchten den Benutzernamen speichern. Es wird also jetzt zwei Dinge geben, einen Schlüsselbenutzernamen , Wert Wert.
Wie zu speichern
Mit putString (), putBoolean (), putInt (), putFloat (), putLong () können Sie Ihren gewünschten Datentyp speichern.
Wie zu holen
http://developer.android.com/reference/android/content/SharedPreferences.html
C. Objektserialisierung
Die Objektserlisierung wird verwendet, wenn wir einen Objektstatus speichern möchten, um ihn über das Netzwerk zu senden, oder wenn Sie ihn auch für Ihren Zweck verwenden können.
Verwenden Sie Java-Bohnen und speichern Sie sie als eines seiner Felder. Verwenden Sie dafür Getter und Setter
JavaBeans sind Java-Klassen mit Eigenschaften. Stellen Sie sich Eigenschaften als private Instanzvariablen vor. Da sie privat sind, können sie nur von außerhalb ihrer Klasse über Methoden in der Klasse aufgerufen werden. Die Methoden, die den Wert einer Eigenschaft ändern, werden als Setter-Methoden bezeichnet, und die Methoden, die den Wert einer Eigenschaft abrufen, werden als Getter-Methoden bezeichnet.
Legen Sie die Variable in Ihrer Mail-Methode mit fest
Verwenden Sie dann das Objekt Serialzation, um dieses Objekt zu serialisieren und in Ihrer anderen Klasse dieses Objekt zu deserialisieren.
Bei der Serialisierung kann ein Objekt als eine Folge von Bytes dargestellt werden, die die Daten des Objekts sowie Informationen über den Objekttyp und die im Objekt gespeicherten Datentypen enthält.
Nachdem ein serialisiertes Objekt in eine Datei geschrieben wurde, kann es aus der Datei gelesen und deserialisiert werden, dh die Typinformationen und Bytes, die das Objekt und seine Daten darstellen, können verwendet werden, um das Objekt im Speicher neu zu erstellen.
Wenn Sie ein Tutorial dazu wünschen, klicken Sie auf diesen Link
http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html
Variable in anderen Klassen abrufen
D. CommonUtilities
Sie können selbst eine Klasse erstellen, die allgemeine Daten enthalten kann, die Sie häufig in Ihrem Projekt benötigen.
Stichprobe
E. Weitergabe von Daten durch Absichten
In diesem Tutorial finden Sie Informationen zum Übergeben von Daten.
http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/
quelle
du musst nicht ...
Rufen Sie einfach newIntent () aus der zweiten Aktivität auf
Fügen Sie Daten hinzu, die zurückgegeben werden sollen
Fahren Sie mit setResult fort
Und kann dann fertig werden
quelle
startActivityForResult ()
Und hier ist ein Link aus dem SDK mit weiteren Informationen:
http://developer.android.com/guide/appendix/faq/commontasks.html#opennewscreen
und scrollen Sie nach unten zu dem Teil mit dem Titel "Ein Ergebnis von einem Bildschirm zurückgeben".
quelle
Ich benutze oft statische Variablen in der aufrufenden Aktivität mit statischen Setter-Methoden, um sie zu setzen.
Auf diese Weise kann ich Werte in jeder Aktivität nach Belieben ändern, unabhängig vom genauen Kontrollfluss zwischen den verschiedenen Aktivitäten.
Beachten Sie, dass dieser Trick nur verwendet werden kann, wenn Sie sich nicht für die Instanziierung von mehr als einer Kopie derselben Aktivität (Klasse) in der Anwendung interessieren. Ich fand dies jedoch am einfachsten zu implementieren und verwende ihn am häufigsten .
quelle
Der beste Weg, dies hier zu tun, besteht darin, eine Variable einer gemeinsamen Klasse zuzuordnen, die außerhalb des Gültigkeitsbereichs definiert ist
in Ihrem Code (zB OnButtonClick etc ...)
innerhalb des Codes von
@Override public void onActivityResult (int requestCode, int resultCode, Intent data) {if (requestCode == Keys.PICK_CONTACT) {if (resultCode == Activity.RESULT_OK) {Uri contactData = data.getData ();
quelle