Ich habe 2 Aktivitäten, Aktivität1 und Aktivität2 .
In Activity1
habe ich einen Button und eine Textansicht . Wenn Sie auf die Schaltfläche klicken, wird Aktivität2 gestartet.
In Activity2
habe ich einen EditText .
Ich möchte die aus EditText in Aktivität2 abgerufenen Daten in der Textansicht in Aktivität1 anzeigen, wenn von Aktivität2 auf Zurück gedrückt wird .
Kann mir jemand mit dem Code helfen, damit dies funktioniert?
android
android-activity
parent-child
pass-data
kumareloaded
quelle
quelle
startActivityForResult
Activity2
Setzt den Wert in einen dauerhaften Speicher undActivity1
liest ihn von dort.Antworten:
Starten Sie Activity2 mit
startActivityForResult
und verwenden Sie diesetResult
Methode zum Zurücksenden von Daten von Activity2 an Activity1. In Aktivität1 müssen SieonActivityResult
für die AktualisierungTextView
mitEditText
Daten aus Aktivität2 überschreiben .Beispielsweise:
In Activity1 starten Activity2 als:
Im Verwenden Sie Aktivität 2 Folgendes , um
setResult
Daten zurückzusenden:Und in Aktivität1 erhalten Sie Daten mit
onActivityResult
:Wenn Sie können, verwenden Sie SharedPreferences auch zum Teilen von Daten zwischen Aktivitäten.
quelle
SharedPreferences
sehen Sie sich dieses Beispiel anAktivität1 sollte Aktivität2 mit starten
startActivityForResult()
.Aktivität2 sollte verwendet werden
setResult()
, um Daten an Aktivität1 zurückzusenden .In Activity2 ,
In Aktivität1 ,
quelle
Andere Antworten waren nicht funktioniert , wenn ich lege
setResult
inonBackPressed
. Das Kommentieren von call to superonBackPressed
und dasfinish
manuelle Anrufen löst das Problem:Und in der ersten Aktivität:
quelle
Nehmen Sie dies als Alternative zu startActivityforResult. Beachten Sie jedoch, dass dieser Ansatz in solchen Fällen in Bezug auf die Leistung teuer sein kann, in einigen Fällen jedoch möglicherweise verwendet werden muss.
In Aktivität 2
In Aktivität1,
quelle
Dies ist Ihre erste Aktivität1.
Von hier aus starten Sie Ihre Activity2.class mit startActivityForResult (mRequestCode, Activity2.class).
Dies ist Ihre zweite Aktivität. Der Name lautet Aktivität2
Wenn Sie mit Ihrer zweiten Aktivität fertig sind, rufen Sie die setResult () -Methode von onBackPress () aus oder klicken Sie auf eine Schaltfläche, wenn Ihre Aktivität2 die Rückrufmethode Ihrer Aktivität1 zerstört. OnActivityResult () ruft von dort aus Ihre Daten aus der Absicht ab ..
Hoffe es wird dir helfen ... :)
quelle
Lese das:
Diese Artikel helfen Ihnen zu verstehen, wie Sie Daten zwischen zwei Aktivitäten in Android übertragen.
quelle
Rufen Sie in Ihrer FirstActivity die SecondActivity mit der Methode startActivityForResult () auf.
Beispielsweise:
Legen Sie in Ihrer SecondActivity die Daten fest, die Sie an FirstActivity zurückgeben möchten. Wenn Sie nicht zurückkehren möchten, stellen Sie keine ein.
Beispiel: In secondActivity, wenn Sie Daten zurücksenden möchten:
Wenn Sie keine Daten zurückgeben möchten:
Schreiben Sie nun in Ihrer FirstActivity-Klasse den folgenden Code für die onActivityResult () -Methode.
quelle
TL; DR Verwendung
Activity.startActivityForResult
Lange Antwort:
Sie sollten zunächst die Android-Entwicklerdokumentation lesen. Insbesondere das Thema Ihrer Frage wird im
Starting Activities and Getting Results
Abschnitt derActivity
Dokumentation behandelt.Als Beispiel Code bietet das Android SDK gute Beispiele. Andere Antworten hier geben Ihnen kurze Ausschnitte aus dem zu verwendenden Beispielcode.
Wenn Sie jedoch nach Alternativen suchen, lesen Sie diese SO-Frage . Dies ist eine gute Diskussion über die Verwendung
startActivityForResults
mit Fragmenten sowie über einige Ansätze zum Übertragen von Daten zwischen Aktivitäten.quelle
und ich habe ein Problem, bei dem ich diesen Datentyp in einem von mir erstellten Soft Button und dem SoftKey, der die Standardeinstellung in jedem Android-Gerät ist, senden wollte. Also habe ich dies getan, zuerst habe ich einen
Intent
in meinem erstellt "A"Activity
:Dann habe ich in meiner zweiten Aktivität ein Feld in meinem "B" deklariert
Activity
:Nachdem ich meine Anfrage erfolgreich gestellt habe oder wann immer ich der Aktivität "A" mitteilen wollte, dass dieser Job hier erfolgreich ausgeführt wurde, ändern Sie den Wert von resultCode auf den Wert, den ich in "A" angegeben habe
Activity
, in meinem Fall "60" und dann:PS: Denken Sie daran, die
Super
Methode aus der onBackPressed-Methode zu entfernen, wenn dies ordnungsgemäß funktionieren soll.dann sollte ich die
onActivityResult
Methode auch in meiner "A" -Aktivität aufrufen :das war's, hoffe es hilft dir. #HappyCoding;
quelle