下面的模式被吹捧为从我的android应用程序中的任何地方获取应用程序上下文的方法。但有时执行MyApp.getContext()
会返回null。我尝试通过从getContext()
中删除static
来更改模式,以便执行MyApp.getInstance().getContext()
。它仍然返回null。如何修复此问题?如何从应用程序中的任何位置获取应用程序的上下文?
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;
}
}
发布于 2014-02-25 01:35:00
在onCreate()
中创建一个getApplicationContext()
(mContext
)的实例,然后在应用程序中的任何地方调用MyApp.getContext()
,您将静态地获得应用程序上下文。
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();
}
}
记得在你的AndroidManifest.xml
中声明
<application android:name="com.mypackage.mypackage.MyApp">
...
...
...
</application>
发布于 2014-02-25 01:33:45
在OnCreate
中创建Context
的静态实例并保留它,直到您想要从getter方法getContext()
获取它为止
来自 Application
类的:
public class MyApp extends Application {
private static Context sContext;
@Override
public void onCreate() {
sContext = getApplicationContext();
super.onCreate();
}
public static Context getContext() {
return sContext;
}
}
在您的 Manifest
**:**中声明它
<application android:name="com.package.name.MyApp">
发布于 2016-01-13 02:50:05
使用以下方法获取应用程序上下文。
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();
}
}
在清单文件中添加应用程序名称
<application android:name="packagename.MyApp"/>
要获取上下文,请使用MyApp.getInstance().getApplicationContext()
https://stackoverflow.com/questions/21994612
复制相似问题