Antworten:
Bundles werden im Allgemeinen zum Übertragen von Daten zwischen verschiedenen Android-Aktivitäten verwendet. Es hängt von Ihnen ab, welche Art von Werten Sie übergeben möchten, aber Bundles können alle Arten von Werten enthalten und an die neue Aktivität übergeben.
Sie können es so verwenden:
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
Sie können die übergebenen Werte erhalten, indem Sie Folgendes tun:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
Weitere Informationen finden Sie unter:
Übergeben Sie Daten zwischen Aktivitäten mithilfe von Bundle
und Intent
Objekten.
Sie erstellen zuerst ein Bundle
Objekt
Bundle b = new Bundle();
Verknüpfen Sie dann die darin gespeicherten Zeichenfolgendaten anystring
mit dem Bündelschlüssel"myname"
b.putString("myname", anystring);
Erstellen Sie nun ein Intent
Objekt
Intent in = new Intent(getApplicationContext(), secondActivity.class);
Übergeben Sie das Bundle-Objekt b
an die Absicht
in.putExtras(b);
und starten Sie die zweite Aktivität
startActivity(in);
In der zweiten Aktivität müssen wir auf die Daten zugreifen, die von der ersten Aktivität übergeben wurden
Intent in = getIntent();
Jetzt müssen Sie die Daten aus dem Bundle abrufen
Bundle b = in.getExtras();
Schließlich erhalten Sie den Wert der Zeichenfolgendaten, die dem benannten Schlüssel zugeordnet sind "myname"
String s = b.getString("myname");
Ich muss hinzufügen, dass Bundles von Aktivitäten verwendet werden, um Daten in Zukunft an sich selbst weiterzugeben.
Wenn sich der Bildschirm dreht oder wenn eine andere Aktivität gestartet wird, wird die Methode protected void onSaveInstanceState(Bundle outState)
aufgerufen und die Aktivität zerstört. Später wird eine weitere Instanz der Aktivität erstellt und public void onCreate(Bundle savedInstanceState)
aufgerufen. Wenn die erste Instanz der Aktivität erstellt wird, ist das Bundle null. und wenn das Bundle nicht null ist, setzt die Aktivität einige Geschäfte fort, die vom Vorgänger gestartet wurden.
Android speichert den Text automatisch in Textfeldern, speichert jedoch nicht alles, und manchmal treten subtile Fehler auf.
Das häufigste Anti-Pattern ist jedoch die Annahme, dass onCreate()
dies nur eine Initialisierung ist. Es ist falsch, weil es auch den Zustand wiederherstellen muss.
Es besteht die Möglichkeit, dieses Verhalten "Aktivität bei Rotation neu erstellen" zu deaktivieren. Es verhindert jedoch keine Fehler im Zusammenhang mit dem Neustart, sondern erschwert nur deren Erwähnung.
Beachten Sie auch, dass die einzige Methode, deren Aufruf garantiert ist, wenn die Aktivität zerstört werden soll, ist onPause()
. (Siehe das Diagramm zum Aktivitätslebenszyklus in den Dokumenten.)
A Bundle
ist einem Java- Map
Objekt sehr ähnlich , das zugeordnet istString
Schlüssel Werten zuordnet. Es wird verwendet, um Informationen zwischen Aktivitäten und anderen Anwendungskomponenten zu übertragen. Es wird auch vom Framework zum Erfassen und Wiederherstellen von Statusinformationen verwendet.
Der Grund, warum Android keine einfachen alten Map
Objekte verwendet, ist, dass Map
es zu flexibel ist. Es kann Objekte enthalten (z. B. E / A-Streams), die nicht serialisiert werden können. Die Bundle
API beschränkt die Objekttypen, die einem Bundle hinzugefügt werden können, so, dass der Inhalt des Bundles garantiert serialisierbar ist. Das Android-Framework basiert auf dieser Eigenschaft.
Ich schlage vor, dass Sie die Dokumentation zu den Anwendungsgrundlagen lesen . Dies erklärt unter anderem, was Bündel und Absichten sind und wofür sie verwendet werden.
Bundles können verwendet werden, um beliebige Daten über Absichten von einer Aktivität zu einer anderen zu senden. Wenn Sie eine Absicht senden, werden interessierte Aktivitäten (und andere BroadcastReciever) darüber informiert. Eine Absicht kann ein Bundle enthalten, sodass Sie zusätzliche Daten zusammen mit der Absicht senden können.
Bundles sind Schlüsselwertzuordnungen, also in gewisser Weise wie ein Hash, aber sie sind nicht streng auf eine einzelne String / Foo-Objektzuordnung beschränkt. Beachten Sie, dass nur bestimmte Datentypen als "Paketierbar" betrachtet werden und in der Bundle-API explizit angegeben sind.
Erstellen Sie einfach ein Bundle,
Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);
IN der "this_is_the_next_class.class"
Sie können die Elemente wie folgt abrufen.
Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);
Bundle: - Eine Zuordnung von String-Werten zu verschiedenen Parcelable-Typen.
Bundle wird im Allgemeinen zum Übertragen von Daten zwischen verschiedenen Aktivitäten von Android verwendet.
Wenn wir onPause () aufrufen, dann onStop () und dann in umgekehrter Reihenfolge onStop () zu onPause ().
Die gespeicherten Daten, die das System zum Wiederherstellen des vorherigen Status verwendet, werden als "Instanzstatus" bezeichnet und sind eine Sammlung von Schlüssel-Wert-Paaren, die in einem Bundle-Objekt gespeichert sind.
Das Bundle wird verwendet, um Daten zwischen Aktivitäten auszutauschen und den Status der App in der oncreate () -Methode zu speichern, damit die App weiß, wo sie gestoppt wurde ... Ich hoffe, es hilft :)
Verwendung von Bundle-Sendedaten von einer Aktivität zu einer anderen Aktivität mit Hilfe eines Intent-Objekts; Bundle enthält die Daten, die ein beliebiger Typ sein kann.
Jetzt erkläre ich, wie man Bundle-Passing-Daten zwischen zwei Aktivitäten erstellt.
Schritt 1: Bei der ersten Aktivität
Bundle b=new Bundle();
b.putString("mkv",anystring);
Intent in=new Intent(getApplicationContext(),secondActivity.class);
in.putExtras(b);
startActivity(in);
Schritt 2: Bei der zweiten Aktivität
Intent in=getIntent();
Bundle b=in.getExtras();
String s=b.getString("mkv");
Ich denke, das ist nützlich für dich ...........
Das Bundle dient nicht nur zum Übertragen von Daten zwischen zwei verschiedenen Komponenten, sondern vor allem zum Wiederherstellen der gespeicherten Werte, bevor die Aktivität in eine neue Aktivität umgewandelt wird.
wie der Text in einem EditText
Widget oder die Bildlaufposition von a ListView
.
Erste Aktivität:
String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem();
RadioButton rb = (RadioButton) findViewById(R.id.rb);
Intent i = new Intent(this,secondActivity.class);
i.putExtra("food",food);
i.putExtra("rb",rb.isChecked());
Zweite Aktivität:
String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");