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. ;)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • Eine neue Klasse anlegen und dort folgenden Code eintragen:


    Java
    public class GlobalDataPool {
    	public static int myInt = 0;
    }


    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.

  • Soweit ich weiß, geht "public static class Foo" nur bei inneren Klassen und gar nicht bei "top-level" classes?


    Also den Code hier nimmt eclipse problemlos an:

    Java
    public class Tab {
    		public static boolean IfaTab;
    	}


    EDIT: UweApps hat wohl alles gesagt ;)

  • 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!