2017-09-06 1 views
-1

Ich habe eine Shopper Klasse erstellt, die Application Klasse für mein Projekt erweitert. Dies ist, wie ich versuche, Kontext in der KlassegetApplicationContext() liefert null in der Anwendungsklasse

public class Shopper extends Application { 
    private Context context; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     context = getApplicationContext(); 
    } 

    public Context getContext() { 
     return context; 
    } 
} 

Aber getApplicationContext immer null zurück zu bekommen. Fehle ich etwas? Ich habe mir this und this angesehen, um eine Idee zu bekommen, wie es geht; aber immer noch das gleiche Ergebnis.

Ich habe den Namen der Klasse zum Manifest hinzugefügt.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="vn.com.shopper"> 

    <application 
     android:name=".Shopper" 
     android:allowBackup="false" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/ShopperTheme" 
     android:fullBackupContent="true"> 
     <activity android:name=".LoginActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

EDIT

mich korrigieren, wenn ich falsch bin (ich könnte wahrscheinlich sein), aber ich verstehe nicht, wie das Feld mit context als statische den Wert von getApplicationContext beeinflussen können (das ist, was die meisten Antworten weisen darauf hin).

+0

Ich habe das versucht. Funktioniert nicht. Gleiches Ergebnis. –

+0

Warum brauchen Sie einen solchen Kontext? Der Kontext ist in allen Ihren Aktivitäten verfügbar, wenn Sie die Anwendungsklasse in Manifest definiert haben. –

+0

try 'context = this.getApplicationContext();' –

Antwort

0

Sie müssen statische

public class Shopper extends Application { 
private static Context context; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    context = getApplicationContext(); 
} 

public static Context getContext() { 
    return context; 
} 
} 

Und

Shopper.getContext(); 
+1

Ich habe das versucht. Gleiches Ergebnis. 'getApplicationContext' gibt' null' zurück –

+0

Ihr Code wird nicht ** statisch ** verwendet. Sie können die Methode getContext() nicht aufrufen. –

+1

In dem Code, den ich gepostet habe, zeige ich nicht, dass ich 'static' verwendet habe; aber der erste [link] (https://stackoverflow.com/a/21819009/6891637), den ich ausprobiert habe, benutzte statisch und es funktionierte nicht für mich. –

0
private static Application _instance; 
public static Application getAppContext() { 
     return _instance; 
    } 
@Override 
public void onCreate() { 
    super.onCreate(); 
    _instance = this; 
} 

Jetzt können Sie leicht getAppContext verwenden verwenden Methode ganz App alle Klassen verwenden Anwendungskontext zu erhalten.

Verwandte Themen