2016-06-08 10 views
2

erstellt wurden Ich habe eine Aktivität und darin habe ich eine Klasse namens AsyncTask. Innerhalb der AsyncTask-Klasse möchte ich einen Zähler als statische Variable deklarieren, aber ich kann das nicht, weil die AsyncTask-Klasse als innere Klasse für die mainActivity angenommen wird.wie die Anzahl der Objekte zu zählen, die von der inneren Klasse

Gibt es eine Möglichkeit, eine statische Variable innerhalb der AsycTask "innere Klasse" zu erstellen, um die Anzahl der Objekte zu zählen, die von der AsyncTask für ein Beispiel erstellt wurden?

Code

class MainActivity extends Activity { 
    .... 
    .... 
    .... 
    .... 

    class MyAsync extends AsyncTask <void, Void, Void> { 

     private static int counter = 0; // is not possible here 
    } 

} 

Antwort

1

Sie können einen Konstruktor erstellen, um die counter innerhalb der AsyncTask zu erhöhen.

Machen Sie es wie folgt aus:

class MainActivity extends Activity { 
.... 
.... 
.... 
.... 
    int counter = 0; 
    class MyAsync extends AsyncTask <void, Void, Void> { 

     MyAsync() 
     { 
      counter++; 
     } 
    } 

} 

Logik dahinter ist: Constructor jeder Klasse wird jedes Mal, wenn die neue Aufgabe, die erstellt wird aufgerufen. Innerhalb Konstruktor haben wir counter++ so jedes Mal, wenn das neue Objekt erstellt wird der Zähler inkrementiert und Sie werden die Anzahl der Objekte erstellt haben.

+0

ok, aber in diesem Fall Zähler Varibale nicht als statisch deklariert werden soll es auch nicht statische sein könnte, es ist nicht? – user2121

+0

Ja, es funktioniert auch nicht statisch .. !! –

+0

@jankigadhiya: Sind Sie Gujrati? : o –

4

Sie könnten nur so etwas tun:

class MainActivity extends Activity { 
    private static int counter = 0; 

    // ... 

    static class MyAsync extends AsyncTask <Void, Void, Void> { 

     private MyAsync() { 
      counter++; 
     } 

     // ... 
    } 
} 

Auf diese Weise counter wird jedes Mal, wenn Sie eine neue Instanz von MyAsync erstellen erhöht werden.

2

Sie können auch eine statische innere Klasse verwenden.

Code

class MainActivity extends Activity { 
    .... 
    .... 
    .... 
    .... 

    static class MyAsync extends AsyncTask <void, Void, Void> { 

     private static int counter = 0; // is not possible here 
    } 

} 
Verwandte Themen