tag - how to know which fragment is visible in android
Obtener contexto de aplicación devuelve null (5)
El siguiente esquema se ha promocionado como la forma de obtener el contexto de la aplicación desde cualquier lugar dentro de mi aplicación para Android. Pero a veces haciendo MyApp.getContext() devuelve null. Intenté cambiar el esquema eliminando la static de getContext() para que hiciera 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;
}
}
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.
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 de forma estática.
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();
}
}
Recuerde declarar en su AndroidManifest.xml
<application android:name="com.mypackage.mypackage.MyApp">
...
...
...
</application>
Cree una instancia estática del Context en su OnCreate y manténgala hasta que desee obtenerla 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;
}
}
Declara en tu Manifest :
<application android:name="com.package.name.MyApp">
Utilice la siguiente manera 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();
}
}
agrega el nombre de la aplicación dentro del archivo Manifest
<application android:name="packagename.MyApp"/>
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() lanzará una NullPointerException . Para arreglar esto, necesita inicializar la variable de instance .