2013-07-29 6 views
66

In einer Android-Anwendung gibt es eine Möglichkeit, den Kontext in Android in einer Nicht-Aktivität-Klasse zu erhalten, wenn der Name der Aktivität Klasse bekannt ist? wie folgtget Kontext in Nicht-Aktivität-Klasse

+1

den Kontext der ur aktuellen Aktivität auf die Java-Klasse Konstruktor übergeben ... – user1969053

+0

Wenn Ihr nicht-Aktivitätsklasse ein 'Fragment', siehe http://stackoverflow.com/questions/8215308/using-Kontext-in-einem-Fragment. – dinosaur

+0

Wenn Sie die Übergabe von Kontexten vermeiden möchten, erstellen Sie eine Klasse, die die Application-Klasse erweitert, und definieren Sie innerhalb dieser Definition den privaten statischen Kontext appContext; und bei onCreate() {this.appContext = getApplicationContext();} und public static Context getContext() {return appContext;} -Methode, die den Anwendungskontext zurückgibt und in der onActivity-Klasse verwendet. –

Antwort

105

Wenn Ihre Klasse nicht-Aktivitätsklasse ist, und eine Instanz davon aus der activiy erstellen, können Sie eine Instanz Kontext über Konstruktor der später passieren:

class YourNonActivityClass{ 

// variable to hold context 
private Context context; 

//save the context recievied via constructor in a local variable 

public YourNonActivityClass(Context context){ 
    this.context=context; 
} 

} 

Sie erstellen können Instanz diese Klasse aus der Tätigkeit wie folgt:

new YourNonActivityClass(this); 
+4

Was passiert, wenn ich eine statische Instanz meiner Klasse habe, da habe ich ein Problem mit statischen Kontexten. Was soll ich tun? –

+0

dann bereit sein für das Speicherleck –