Erhalten Sie den Anwendungskontext, der Null zurückgibt

Das folgende Schema wurde als die Art und Weise angewendet, um Anwendungskontext von irgendwoher innerhalb meiner Android-App zu erhalten. Aber manchmal macht MyApp.getContext() null zurück. Ich habe versucht, das Schema zu ändern, indem getContext() static von getContext() damit ich MyApp.getInstance().getContext() . Es kommt immer noch null zurück. Wie kann ich das beheben? Wie bekomme ich den Kontext meiner Anwendung von überall in meiner App?

 public class MyApp extends Application { private static MyApp instance; public static MyApp getInstance() { return instance; } public static Context getContext() { return instance.getApplicationContext(); } @Override public void onCreate() { super.onCreate(); instance = this; } } 

5 Solutions collect form web for “Erhalten Sie den Anwendungskontext, der Null zurückgibt”

Erstellen Sie in onCreate() eine Instanz von getApplicationContext() ( mContext ) und rufen Sie MyApp.getContext() von überall in Ihrer App an und Sie erhalten Ihren Anwendungskontext statisch.

 public class MyApp extends Application { //private static MyApp instance; private static Context mContext; public static MyApp getInstance() { return instance; } public static Context getContext() { // return instance.getApplicationContext(); return mContext; } @Override public void onCreate() { super.onCreate(); // instance = this; mContext = getApplicationContext(); } } 

Denken Sie daran, in Ihrem AndroidManifest.xml zu deklarieren

 <application android:name="com.mypackage.mypackage.MyApp"> ... ... ... </application> 

Erstellen Sie eine statische Instanz des Context in Ihrem OnCreate und halten Sie es, bis Sie es von einer Gettermethode erhalten getContext()

Aus der Application Klasse:

 public class MyApp extends Application { private static Context sContext; @Override public void onCreate() { sContext = getApplicationContext(); super.onCreate(); } public static Context getContext() { return sContext; } } 

Erkläre es in deinem Manifest :

 <application android:name="com.package.name.MyApp"> 

Verwenden Sie die folgende Möglichkeit, den Anwendungskontext zu erhalten.

 public class MyApp extends Application { private static MyApp mAppInstance=null; public static Context appContext; public static MyApp getInstance() { return mAppInstance; } public static MyApp get() { return get(appContext); } public static MyApp get(Context context) { return (MyApp) context.getApplicationContext(); } @Override public void onCreate() { super.onCreate(); mAppInstance=this; appContext=getApplicationContext(); } } 

Fügen Sie den Anwendungsnamen in der Manifest- Datei hinzu

 <application android:name="packagename.MyApp"/> 

Um den Kontext zu nutzen, verwenden Sie MyApp.getInstance().getApplicationContext()

instance wird nicht initialisiert und hat daher einen Standardwert von null . Dies bedeutet, dass instance.getContext() eine NullPointerException . Um dies zu beheben, müssen Sie die Instanzvariable initialisieren.

Derzeit haben Sie keine Instanz initialisiert und standardmäßig wird der Wert auf null gesetzt. Sie müssen ihm einen Wert zuweisen, bevor Sie ihn verwenden können.

Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.