在我的android项目中,我有ImageAdapter类,可以在其中传递应用程序上下文以满足进一步的需求。
public class ImageAdapter extends BaseAdapter {
private Context c;
public ImageAdapter(Context c) {
this.c = c;
}
...
}
问题是我想使ImageAdapter作为一个单例对象,以便可以从我的所有活动中轻松访问此类的实例。但是我不知道如何将我的活动之一中的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;
}
...
}
也许您还有其他一些想法可以共享ImageAdapter用于我的任何活动。我是android的新手,我对在活动之间传递数据的方式有些困惑。
我将不胜感激。
更新:2018年3月6日
使用MyApplication
实例代替Context
实例。Application
instance是一个单例上下文实例本身。
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()
不要忘记在清单文件中声明应用程序:
<application
android:name=".MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句