Eine kurze frage:
Ich möchte eine String oder int variable erstellen auf die ich Klassenübergreifend zugreifen werden.
Wie dass??
Klassenübergreifende Variable
-
-
Also denke es gibt da zwei versch. Möglichkeiten. Entweder in der String.xml speichern oder in einer Klasse die Variable schreiben und in der anderen Klasse dann die Variable durch die Klasse aufrufen.
Vll. fällt jemanden ja nochwas besseres ein. -
und wie geht das jetzt konkret (code)
-
Eine neue Klasse anlegen und dort folgenden Code eintragen:
Wichtig ist hier das static, damit der Inhalt der Variable im Programmablauf erhalten bleibt.Zugriff ist dann mit x = GlobalDataPool.myInt möglich.
Du kannst die static-Variable auch in einer anderen Klasse (z.B. die MainActivity) unterbringen.
-
-
oh - da hast du ein Problem von Java, das ich dir im Detail gerne aufschlüsseln kann, ist aber nicht so einfach. Ich versuche es mal...
Wenn du eine eigene Klassendatei anlegst mit dem Namen Tab und dort den Code reinpackst, dann geht es auch ohne static in der class Definition.
Das macht auch Sinn, denn dann kannst du deiner Klasse Tab auch noch weitere Variablen und Funktionen dazu packen und Objekte davon bauen.
Die static-Variable ist dann eine sog. Klassenvariable und nur einmal vorhanden (die ganzen KONSTANTEN in Android sind solche).Wenn Tab aber eine Klasse in einer anderen Klasse ist, dann muss static auch in der Klassendefinition stehen.
Warum?
static bedeutet, dass deine Variable IfaTab immer verfügbar ist, egal ob von der Klasse ein Objekt existiert oder nicht.
Das geht bei inneren Klassen aber nur, wenn die innere Klasse selber auch immer vorhanden (static) ist.Dies ist eines der dunklen Kapitel der Speicherverwaltung, die leider mehr nach der technischen Umsetzung und nicht so sehr nach dem normalen Userverständnis funktionieren.
-
-
Naja - es gibt (zumindest in anderen Sprachen) statische Klassen, auch wenn das bei Java in der Definition der Hauptklasse nicht eingetragen wird.
Das typische Beispiel ist Math - du wirst wohl kaum ein Mathematik-Objekt bauen wollen / können, sondern immer die Funktionen direkt mit Math.func() aufrufen.
Aber das nur so am Rande. *liebguck*
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!