Wie kann ich Daten von einer Aktivität (Absicht) an eine andere senden?
Ich benutze diesen Code, um Daten zu senden:
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
android
android-intent
Adham
quelle
quelle
user.getUserAccountId()+""
, da dies unnötige Objekte erzeugen würde gesammelt werden. Erwägen Sie die Verwendung vonString.valueOf(user.getUserAccountId)
oderInteger.toString(user.getUserAccountId)
stattdessen.Antworten:
Ermitteln Sie zunächst die Absicht, mit der Ihre Aktivität gestartet wurde, mithilfe der folgenden
getIntent()
Methode:Wenn Ihre zusätzlichen Daten als Zeichenfolgen dargestellt werden, können Sie die
intent.getStringExtra(String name)
Methode verwenden. In Ihrem Fall:quelle
getIntent().getStringExtra("id");
um die ID-Zeichenfolge zu erhaltengetIntent()
Methode erhalten. Ich habe die Antwort aktualisiert.In der empfangenden Aktivität
quelle
getStringExtra?
null
kann der gesamte Extras-Abruf übersprungen werden. Durch die VerwendunggetStringExtra
ändern Sie es im Grunde in eine Reihe vonif(extras != null) { return extras.getString(name) }
. Eine für jeden, dengetStringExtra
Sie anrufen. Diese Option wirdnull
einmal überprüft und wenn ja, wird das LesenBundle
überhaupt nicht gestört . AußerdemgetStringExtra
werde ich wahrscheinlichgetExtras
jedes Mal auch intern nachfragen . Sie haben also einfach mehr Funktionsaufrufe.quelle
Add-up
Daten einstellen
Daten empfangen
quelle
Anstatt eine andere neue Absicht zum Empfangen der Daten zu initialisieren, gehen Sie einfach wie folgt vor:
quelle
Wenn Sie in einer FragmentActivity verwendet werden, versuchen Sie Folgendes:
Die erste Seite erweitert FragmentActivity
In dem Fragment müssen Sie nur
getActivity()
zuerst aufrufen ,Die zweite Seite erweitert Fragment :
quelle
Wenn Sie versuchen, zusätzliche Daten in Fragmenten abzurufen, können Sie Folgendes verwenden:
Platzieren Sie Daten mit:
Holen Sie sich Daten mit:
quelle
Sie können jede Art von zusätzlichen Daten aus der Absicht abrufen , unabhängig davon, ob es sich um ein Objekt, eine Zeichenfolge oder eine beliebige Art von Daten handelt.
und die kürzeste Lösung ist:
quelle
** Daten nach Absicht setzen - **
** Daten nach Absicht abrufen - **
wenn wir einen Integer-Wert durch Intent senden . Wenn wir den 2. Parameter 0 in getIntent () verwenden müssen. getIntExtra ("instituteId", 0), sonst verwenden wir keine 0, dann gibt Android mir einen Fehler.
quelle
Kotlin
Erste Aktivität
Zweite Aktivität
Vorschlag
Legen Sie die Schlüssel immer in einer konstanten Datei ab, um sie besser verwalten zu können.
quelle
Nur ein Vorschlag:
Anstatt "id" oder "name" in Ihrem i.putExtra ("id" .....) zu verwenden, würde ich vorschlagen, wenn es sinnvoll ist, die aktuellen Standardfelder zu verwenden, die mit putExtra () verwendet werden können, d. H. Intent.EXTRA_something.
Eine vollständige Liste finden Sie unter Intent (Android Developers).
quelle
Wir können es mit einfachen Mitteln tun:
In FirstActivity:
In SecondActivity:
quelle
Übergeben Sie die Absicht mit Wert auf Erste Aktivität:
Absicht auf zweite Aktivität erhalten; -
Wir verwenden im Allgemeinen zwei Methoden, um den Wert zu senden und den Wert zu erhalten. Für den Wert zu senden verwenden wir
intent.putExtra("key", Value);
und die Absicht während auf einer anderen Tätigkeit erhalten , werden wir verwenden , umintent.getStringExtra("key");
die Absicht Daten zu erhalten , wie zuString
oder verwenden Sie eine andere verfügbare Methode , um andere Arten von Daten (Integer
,Boolean
usw.). Der Schlüssel kann ein beliebiges Schlüsselwort sein, um den Wert zu identifizieren. Dies bedeutet, welchen Wert Sie teilen. Hoffe es wird für dich funktionieren.quelle
Sie können dies auch tun
// Wert in Absicht setzen
// Wert aus Absicht abrufen
quelle
Verschiedene Arten von Extra von Intent erhalten
Um von Intent auf Daten zuzugreifen, sollten Sie zwei Dinge wissen.
In der Intent-Klasse gibt es verschiedene Methoden, um verschiedene Arten von Datentypen zu extrahieren. Es sieht aus wie das
Wenn Sie also den Datentyp Ihrer Varibale kennen, den Sie in otherActivity festgelegt haben, können Sie die entsprechende Methode verwenden.
Beispiel zum Abrufen eines Strings in Ihrer Aktivität von Intent
Liste verschiedener Methodenvarianten für verschiedene Datentypen
Die Liste der verfügbaren Methoden finden Sie in der offiziellen Dokumentation der Absicht .
quelle
quelle
Ich habe gerade hier eine Antwort gepostet , dass deckt dieses Thema etwas ausführlicher, darunter auch einige Alternativen.
Es verwendet die Vapor API , ein neues von jQuery inspiriertes Android-Framework, das ich geschrieben habe, um die Android-Entwicklung zu vereinfachen. Sehen Sie sich das Beispiel in dieser Antwort an, um zu erfahren, wie Sie Daten einfach zwischen Aktivitäten übertragen können.
Außerdem wird gezeigt
VaporIntent
, wie Sie Methodenaufrufe verketten und die überladene.put(...)
Methode verwenden können:Mit der Vapor-API können Sie problemlos Daten in Ihrer gesamten Anwendung weitergeben. Hoffentlich sind sie für Sie und andere bei der App-Entwicklung hilfreich.
quelle