Auch wenn dein Problem gelöst ist... wenn du ein Objekt von einer Activity zu einer anderen weitergeben willst, eignet sich hierfür auch dein Objekt mit "implements Parcelable" zu erweitern. Wie so etwas aussehen kann zeig ich dir mal hier:
1public class Profil implements Parcelable{
2
3
4 private String profilname;
5 private Rechnungsdaten rechnungsDaten;
6
7
8 public Profil() {
9
10 }
11
12
13 public Profil(String profilname, Rechnungsdaten rechnungsDaten) {
14 this.rechnungsDaten = rechnungsDaten;
15 this.profilname = profilname;
16 }
17
18
19 public Rechnungsdaten getRechnungsdaten() {
20 if(rechnungsDaten == null){
21 rechnungsDaten = new Rechnungsdaten();
22 }
23 return rechnungsDaten;
24 }
25
26
27 public void setRechnungsdaten(Rechnungsdaten adresse) {
28 this.rechnungsDaten = adresse;
29 }
30
31
32 public String getProfilname() {
33 return profilname;
34 }
35
36
37 public void setProfilname(String profilname) {
38 this.profilname = profilname;
39 }
40
41
42 // -----------------------
43 // Parcelable --------
44 // -----------------------
45
46
47 public static final Parcelable.Creator<Profil> CREATOR = new Parcelable.Creator<Profil>() {
48 @Override
49 public Profil createFromParcel(Parcel source) {
50 return new Profil(source);
51 }
52 @Override
53 public Profil[] newArray(int size) {
54 return new Profil[size];
55 }
56
57 };
58
59
60 private Profil(Parcel p) {
61 setProfilname(p.readString());
62 setRechnungsdaten((Rechnungsdaten)p.readParcelable(Rechnungsdaten.class.getClassLoader()));
63 }
64
65
66 @Override
67 public void writeToParcel(Parcel out, int flags) {
68 out.writeString(getProfilname());
69 out.writeParcelable(getRechnungsdaten(), flags);
70 }
71
72
73 @Override
74 public int describeContents() {
75 // TODO Auto-generated method stub
76 return 0;
77 }
78
79
80 public static final Parcelable.Creator<Profil> CREATOR = new Parcelable.Creator<Profil>() {
81
82 @Override
83 public Profil createFromParcel(Parcel source) {
84 return new Profil(source);
85 }
86
87 @Override
88 public Profil[] newArray(int size) {
89 return new Profil[size];
90 }
91
92 };
93
94
95 // -----------------------
96 // Parcelable End --
97 // -----------------------
98
99}
Hierbei ist allerdings zu beachten, dass die hier genannte "Rechnungsadresse" auch Parcelable implementieren muss und dortige, eventuelle Objekte welche kein primitiver Datentyp sind, auch dies in dieser Form implementieren müssen.
Das Objekt dann einer Activity weiter zu geben und in dieser aus zu lesen geht wie folgt:
1//(Pseudocode)
2
3// Du erstellst einen Intent
4Intent i = new Intent(context, Activity2.class);
5
6// Du fügst deinem Intent das zu übertragen gewünschte Objekt zu
7i.putExtra("profil", new Profil("TestProfil", new Rechnungsadresse("Irgendwelche Daten die hier hin gehören")));
8
9// Du startest ganz normal die Activity
10this.startActivity(i);
11
12// -----------------------------------------
13
14// In der nun gestarteten Activity kannst du das Pofil nun wie folgt abrufen
15Profil p = this.getIntent().getParcelableExtra("profil");
Das wäre die sauberste Methode und auch die Methode die ich dir empfehlen würde. Der Grund ist ganz einfach, da man Singletons so weit es geht vermeiden sollte (schon allein deswegen, da es nicht dem Sinn der OOP entspricht), weil diese zu schwer nachvollziehbaren Fehlern führen können und das Testen ungemein erschweren. Nutze Singleton also am Besten nur da, wo es wirklich nicht anders geht.
— geändert am 15.02.2012, 12:44:34
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.