Loading the player...
X

Anmelden

Passwort vergessen?

... oder mit Facebook anmelden:

Du hast noch keinen Zugang zu AndroidPIT? Registrieren

Static Variable

Static Variable
verfasst am 01.04.2012 01:10:46
Hallo,

ich habe in einer Klasse einen Statischen Counter:

public static int counter;

Den Erhöhe ich jedesmal um wenn ein Objekt erstellt wird um 1.
Möchte ich allerdings außerhalb der Klasse den Counter abfragen, bekomme ich immer 0 zurück geliefert. Logge ich aber auf was der Counter erhöht wurde, sehe ich das dieser ganz normal durchzählt.

Wieso?

LG,
Daniel
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Static Variable
verfasst am 01.04.2012 12:15:54
Zeig mal wie du das machst ;)

-----
Neu : Windmate HD | Bin auf der Google I/O anzutreffen

Antworten mit Zitat Antworten Link +1     (1 Stimme)
RE: Static Variable
verfasst am 01.04.2012 12:42:52
Ich frage die Variable über MeineKlasse.getCounter() ab. Ich erzeuge also vorher kein Objekt davon, könnte es daran liegen?
getCounter() ist eine statische Methode von MeineKlasse welche nur den counter zurück gibt.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Static Variable
verfasst am 01.04.2012 12:49:18
Daniel online
Ich erzeuge also vorher kein Objekt davon, könnte es daran liegen?
Die Variable ist statisch, also brauchst du kein Objekt erzeugen. Der Fehler muss wo anders liegen.

-----
GET NOW All-in-One Drum Pads WITH 60 SOUNDS, ADJUSTABLE NUMBER OF PADS, ADJUSTABLE PITCH ...

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Static Variable
verfasst am 01.04.2012 13:20:38
ok dann hier mal der Code:

Meine Klasse:
1public class Eieruhr {
2
3 private static String TAG = "Eieruhr";
4 private static boolean DEBUG = true;
5
6 public static int count = 0
7
8
9 public Eieruhr(Context ctx, int pos){
10 this.ctx = ctx;
11 count++;
12 position = pos;
13
14 if(DEBUG) Log.d(TAG,"Eieruhr erstellt. position="+position+". Count="+count);
15 }
16
17 public static int getCount(){
18 return count;
19 }

Die Abfrage aus einer anderen Klasse wie hier ergibt dann immer 0:
1if(DEBUG)Log.d(TAG,"COUNT= "+Eieruhr.count);


Ich habe jetzt nur den relevanten code kopiert.... ich verstehe einfach nicht wieso das nicht funktioniert. Ist ja eigentlich ziemlich simple...
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Static Variable
verfasst am 01.04.2012 13:32:12
Ist zwar noch wenig kontext, aber versuch mal ein synchronized so das alle Threads die Änderungen "sehen"...

public static synchronized int getCount(){
return count;
}

-----
Neu : Windmate HD | Bin auf der Google I/O anzutreffen

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Static Variable
verfasst am 01.04.2012 16:53:07
Was ist denn die andere Klasse?
Läuft die innerhalb desselben App Kontextes, oder ist es ein Service oder evtl. was ganz eigenständiges?

static Variablen gehören dem Classloader.
D.h. wenn du innerhalb eines Geräts zwei App Instanzen hast, die von unterschiedlichen Classloadern geladen wurden, haben die zwei unterschiedliche Exemplare der Variable.
Auch wenn die App aus dem Speicher geräumt wird (also auch die Klassen unloaded werden), wird der Wert zurückgesetzt.

-----
Verkaufswert Rechner -- Verkaufswert Rechner Online -- 1-Klick Kleinanzeigen -- MadMonitor -- AndroidPIT Dev Stats -- Directupload.net Image Sharer

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Static Variable
verfasst am 01.04.2012 17:02:26
Ich schätze du hast einen Fehler im von dir entfernten "irrelevanten" Code :-)

Rein aus dem Gefühl heraus würd ich sagen, du zählst die falsche count variable hoch. Schon rein aus Gründen der Codelesbarkeit, schreib doch einfach mal "Eieruhr.count++" statt nur "count++";

-----
Worm Puncher | Sholik | Robo Miner | Minesweeper: Unlimited!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)