在我的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实例。Applicationinstance是单例上下文实例本身。
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()
MyApplication.getContext()
不要忘记在清单文件中声明应用程序:
<application android:name=".MyApplication" android:icon="@drawable/icon" android:label="@string/app_name" >