viewpager tag know how current check active android applicationcontext

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 .