在我的 android 项目中,我有 ImageAdapter 类,我在其中传递应用上下文以满足进一步的需求。
public class ImageAdapter extends BaseAdapter {
private Context c;
public ImageAdapter(Context c) {
this.c = c;
}
...
}
问题是我想让 ImageAdapter 成为一个单例,以便从我的所有 Activity 中轻松访问此类的实例。但我不知道如何将应用程序上下文从我的一项 Activity 的 getApplicationContext() 方法传递到 ImageAdapter。那么有没有什么“魔法”可以做到以下几点?
public class ImageAdapter extends BaseAdapter {
private Context c;
private static class Holder {
public static final ImageAdapter IA = new ImageAdapter();
}
private ImageAdapter() {
this.c = /* some magic here */.getApplicationContext();
}
public static ImageAdapter getInstance() {
return Holder.IA;
}
...
}
也许你有一些其他的想法来分享我的任何 Activity 的 ImageAdapter。 我是 android 的新手,我对在 Activity 之间传递数据的方式有点困惑。
如果有任何帮助,我将不胜感激。
最佳答案
更新:2018 年 3 月 6 日
使用 MyApplication
实例而不是 Context
实例。 Application
实例本身就是一个单例上下文实例。
public class MyApplication extends Application {
private static MyApplication mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = this;
}
public static MyApplication getContext() {
return mContext;
}
}
上一个答案
您可以像这样获取应用程序上下文:
public class MyApplication extends Application {
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
}
public static Context getContext() {
return mContext;
}
}
然后,您可以从方法 MyApplication.getContext()
不要忘记在 list 文件中声明应用程序:
<application
android:name=".MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >
关于java - 从非 Activity 单例类获取应用程序上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818905/