Obtener el contexto de la aplicación devuelve nulo

El siguiente esquema se promociona como la forma de obtener el contexto de la aplicación desde cualquier lugar dentro de mi aplicación de Android. Pero a veces hacer MyApp.getContext() devuelve null. Intenté cambiar el esquema eliminando la static de getContext() para poder hacer MyApp.getInstance().getContext() . Todavía devuelve nulo. ¿Cómo puedo solucionar esto? ¿Cómo obtengo el contexto de mi aplicación desde cualquier lugar dentro de mi aplicación?

 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; } } 

Cree en onCreate() una instancia de getApplicationContext() ( mContext ) luego llame a MyApp.getContext() desde cualquier lugar de su aplicación y obtendrá el contexto de su aplicación estáticamente.

 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(); } } 

Recuerda declarar en tu AndroidManifest.xml

  ... ... ...  

Cree una instancia estática del Context en su OnCreate y guárdelo hasta que desee obtenerlo de un método getContext()

De la clase de Application :

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

Declararlo en tu Manifest :

  

Use la siguiente forma para obtener el contexto de la aplicación.

 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(); } } 

agregue el nombre de la aplicación dentro del archivo Manifest

  

para obtener el contexto use MyApp.getInstance().getApplicationContext()

instance nunca se inicializa y, por lo tanto, tiene un valor predeterminado de null . Esto significa que instance.getContext() arrojará una NullPointerException . Para solucionar esto, necesita inicializar la variable de instance .

Actualmente, no ha inicializado la instancia y, de forma predeterminada, su valor ahora se establecerá en nulo. Debe asignarle un valor antes de poder usarlo.