2016-05-07 14 views
0

klingt dumm, aber eine einfache Inkrement Zähler funktioniert nicht in meiner Android App.Einfache Inkrement Zähler funktioniert nicht in Android App

Ich habe zwei Aktivitäten in der App und jeweils einen Zähler, der jedes Mal erhöht wird, wenn die onCreate-Methode aufgerufen wird. Wenn ich zwischen den Aktivitäten wechsle, funktioniert das erste gut, aber das andere zählt nicht.

ich die gleiche Linie bin mit der Variable wie folgt zu erstellen:

private int mCreate; 

Dann bin ich nur es auf die gleiche Weise in jeder Klasse in der onCreate Methode Erhöhen:

mCreate++; 

Diese Variable wird in zwei verschiedenen Klassen verwendet, sollte also kein Problem sein. Dies ist meine erste Android-App, also brauche ich etwas Hilfe.

Der gesamte Code der zweiten Aktivität. Ich zeige nicht die erste, weil der einzige Unterschied in der Methode setOnClickListener ist.

+0

Können Sie etwas besser erklären und vielleicht mehr von Ihrem Code zeigen? Sollten sie zwei verschiedene Zähler sein oder einen mit einem einzigen Wert? – codeMagic

+0

Lokale Variablen in einer Aktivität werden jedes Mal neu erstellt, wenn oncreate aufgerufen wird. Wenn Sie die Variable pflegen müssen, sollten Sie sie an eine andere Stelle setzen, z. B. in eine statische Variable in Ihrer Application-Klasse. – Stefan

+0

@codeMagic Ich habe hinzugefügt, kommen mehr Code. Danke für Ihre Hilfe! – Oleg

Antwort

1

Der Grund, warum Ihr zweiter Zähler nicht funktioniert, weil nach Abschluss einer Aktivität alle Variablen und Objekte zerstört und durch GC frei gemacht werden. Wenn Sie diese Aktivität das nächste Mal aufrufen, wird sie von Grund auf neu erstellt und Ihre Anzahl bleibt immer gleich.

Wie @Opoo sagte, wenn Sie zählen möchten, sollten Sie statische Variable in Application-Klasse definieren.

+0

Ja, ich habe gerade die gleiche Antwort erreicht. Vielen Dank! Ich habe die Aktivitätszyklusanweisungen nicht richtig verstanden. Die erste Aktivität bestand darin, zwischen onRestart- und onStop-Methoden zu wechseln, weshalb alle Variablen aktiv waren und der Zähler ordnungsgemäß funktionierte. Die zweite Aktivität wurde jedesmal mit allen Variablen zerstört, wenn die Schaltfläche mit der Methode finish() gedrückt wurde. – Oleg

Verwandte Themen