ich habe glaube ein echtes Anfängerproblem.
Ich arbeite mit vielen Klassen (in Adroid mit vielen Activitys) und ich habe eine Klasse DataSafe.java geschrieben, welche nur dazu dient Daten zu verwalten, die großenteils in den verschiedenen Klassen gebraucht werden.
Im Moment initialisiere ich in jeder der vielen Klassen die DataSafe ds = new DataSafe(); Das hat natürlich zur Folge, dass ich immer eine neue Instanz bekomme, aber nicht die Daten, so wie ich sie zuvor in der vorhergehenden Klasse manipuliert habe.
Die Klasse DataSafe static zu setzen scheint nicht zu gehen. Es folgt “Illegal modifier for the class DataSafe; only public, abstract & final are permitted”.
Wie kann ich das Problem einfach und fachgerecht lösen?
Grundsätzlich kann man nicht die Klasse selbst static machen. Aber man KÖNNTE entweder
alle fields und methods static machen
ein Singleton verwenden
Wenn du so lapidar von Daten redest, die hier und da gebraucht werden, klingt das aber vielmehr nach einer fehlenden Struktur, d.h. du solltest kritischST hinterfragen, ob es da nicht eine geeignetere Lösung gibt…
Zu Überlegen wäre, ob Du nicht einige der vielen Activities als Fragment implementieren kannst, dann würde es ja ausreichen, wenn die die Fragments nutzende Activity die Datenklasse kennt und Datenänderungen von diesen entgegennimmt oder diesen mitteilt.
Statischer Zugriff auf Daten ist unter Android nicht unüblich. Wie erwähnt können nur innere Klassen statisch sein, aber statische Felder und Methoden wären für Deinen Zweck ja ausreichend. Nutzt Du eine Datenbank oder sollen die Daten nur flüchtig gehalten werden?
Ich habe es erfolgreich mit einem **Singleton **umgesetzt. Das gefällt mir und es funktioniert.
Und Michael, ich denke du hast recht mit den Fragments, die ich ja wirklich auch einsetze.
Aber da habe ich immer noch Problemchen damit. Evtl. werde ich nachträglich noch mal den Code anpassen,
wenn ich dieses Problemchen gelöst habe.
Und ja, die Werte sollen flüchtig bleiben.