Object an eine Activity mitgeben


Fabio Hellmann

Erfahrenes Mitglied
Hi zusammen,

ich sitze gerade vor folgendem Problem:

Ich habe eine Activity A und eine Activity B. In A lasse ich die Daten von dem Objekt O anzeigen. In B lasse ich diese Daten bearbeiten. Nun habe ich aber festgestellt, dass es nichts bringt, wenn ich O Serializable/Parcelable implementieren lasse, da die Objekt-ID nach der Übergabe an B verändert wurde und somit ein neues Objekt darstellt, sodass die gespeicherten Änderungen in O nach dem Anzeigen von A nicht dargestellt werden.

Meine Frage nun: Ist es möglich, ein Objekt an eine Activity zu übergeben, ohne das dabei die Objekt-ID (ein Objektklon erzeugt wird) geändert wird?

Mit Serializable und Parcelable funktioniert es schonmal nicht. Über einen static Datenmanager möchte ich das ungerne realisieren. Ich bezweifle auch, dass es in dieser Programmkonstruktion gehen würde.

Object O:
Java:
public class Test implements Serializable {
	private String name;

	/**
	 * @param name
	 *            the name to set
	 */
	public void setName(final String name) {
		this.name = name;
	}

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}
}
Activity A:
Java:
	protected void onOpenActivityB(final Test test) {
		final Intent intent = new Intent(this, ActivityB.class);
		intent.putExtra("test", test);
		startActivity(intent);
	}
Acitivity B:
Ruft nach dem Speichern finish() auf, sodass man auf die Main-Activity (A) zurück kommt.
Activity A wird nach dem erneuten anzeigen aktualisiert, sodass die Änderungen ersichtlich werden sollten.


Ich muss dazu sagen, dass ist alles relativ theoretisch. Das hängt aber damit zusammen, dass mein Projekt mitlerweile sehr groß ist und ich nicht den ganzen Code posten will, da dann keiner mehr durchblicken würde. Also nicht denken, dass es in diesem Beispiel keinen Sinn machen würde (das weiß ich auch :) ).

Ich hoffe, dass ich mein Problem einigermaßen gut geschildert habe. Falls noch Fragen sind, einfach fragen. Ich hoffe auf eure Unterstützung.

Gruß

Fabio
 

mdunker

Mitglied
Hallo Fabio,

leider ist es nicht möglich ein Object zu übergeben ohne das sich die ID ändert. Warum legst Du es nicht in der Datenbank ab?

Schönen Gruß,
Mirco
 

Fasibio

Mitglied
Oder du Defininierst in einer extra Klasse ein statische Variable in der du eine referenz dieses Objekt uebergibst.
dann kannst du es im anderen activity (Wenn es sich im selben Projekt befindet ) darauf zugreifen

In ActivityB:
Java:
public class ActivityB extends Activity{
    public static Test test= null;

    public void onCreate(...){
         if (test != null){
          //mach was 
        } 
    }

}

Und in Activity A:
Java:
  protected void onOpenActivityB(final Test test) {
        final Intent intent = new Intent(this, ActivityB.class);
        ActivityB.test = test;        
        startActivity(intent);
    }
Oder so ähnlich halt.


Auch ist es möglich hinzugehen und Test zu Serialzieren

Die Klasse Test:
Java:
public class Test implements Serializable{
....
}

Der Aufruf:
Java:
protected void onOpenActivityB(final Test test) {
        final Intent intent = new Intent(this, ActivityB.class);
       Bundle bundle = new Bundle();  
       bundle.putSerializable("test", test);
        intent.putExtra(bundle);
        startActivity(intent);
    }
Und in ActivityB (So bekommt man es wieder):
Java:
public class ActivityB extends Activity{
    

    public void onCreate(...){
         Intent intent=this.getIntent();
         Bundle bundle=intent.getExtras();
         Test test= (Test)bundle.getSerializable("test");
    }

}
Ist aber jetzt ungetestet
 
Zuletzt bearbeitet:

Neue Beiträge