[Android]: Aufrufen einer Activity und dabei Daten mit übergeben
Beim Aufrufen einer Activity kann man Daten übergeben, die in der aufgerufenen Activity ausgewertet werden können. Dies können primitive Datentypen sein oder Instanzen von eigenen Klassen.
Der Aufrufer muss eine Intent-Instanz mit den entsprechenden Informationen befüllen und mit diesem Intent dann die Activity aufrufen.
01. Intent intent = new Intent( context, YourActivityClass.class );
02. YourContainerClass data = new YourContainerClass( „some usefull data“ );
03. intent.putExtra( „yourdata“, data );
04. startActivity( intent );
In Zeile 01 wird eine Intent-Instanz erzeugt. Die Activity-Klasse, die aufgerufen werden soll, heisst hier YourActivityClass.
In Zeile 02 wird von einer Klasse eine Instanz erzeugt, die als Datencontainer dient und die benötigten Informationen vom Aufrufer an YourActivityClass übergibt. Im Beispiel wird davon ausgegangen, dass der String „some usefull data“ innerhalb der Container-Instanz gespeichert wird und dadurch an YourActivityClass übergeben wird.
In Zeile 03 wird die Instanz der Container-Klasse in die Intent-Instanz übergeben. Die Container-Klasse wird dabei unter dem Schlüssel „yourdata“ abgelegt.
In Zeile 04 wird schliesslich die Activity (hier also YourActivityClass) aufgerufen.
Um die Informationen auf Seiten der aufgerufenen Activity auszulesen, wird folgender Code genutzt:
01. protected void onCreate( Bundle savedInstanceState )
02. {
03. super.onCreate( savedInstanceState );
04. Intent intent = getIntent();
05. YourContainerClass data = ( YourContainerClass )intent.getExtras().get( „yourdata“ );
06. // doing some other usefull stuff
07. }
In Zeile 01 wird der Methodenaufruf von onCreate() gezeigt, möglich wäre aber z.B. auch onStart() oder onResume().
In Zeile 04 wird das Intent-Objekt geholt, welches zum Aufruf der Activity genutzt wurde.
In Zeile 05 wird die Container-Klasse aus dem Intent-Objekt geholt, welches auf Seiten des Aufrufer-Codes unter dem Schlüssel „yourdata“ in dem Intent-Objekt abgelegt wurde.