我早些时候问过类似的问题,但我不知道该怎么办,我还阅读了其他解决方案,例如:What is a NullPointerException, and how do I fix it? 我仍然不知道该怎么办,请帮忙:
据我了解,我的context = null;
和我不确定为什么以及如何解决...
我编写了一个UniversImageLoader.class以便能够通过多个活动加载图像。现在,我已经在所有活动中启动了它,但是在我的UIL类中,我需要传递一个上下文。
public class UniversalImageLoader {
private static final int defaultImage = R.drawable.ic_android;
private Context mContext;
public UniversalImageLoader(Context context) {
mContext = context;
}
public ImageLoaderConfiguration getConfig(){
//File cacheDir = StorageUtils.getCacheDirectory(mContext);
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(mContext)//<--the error is in this line
.memoryCacheExtraOptions(480, 800) // default = device screen dimensions
.diskCacheExtraOptions(480, 800, null)
.threadPriority(Thread.NORM_PRIORITY - 2) // default
.tasksProcessingOrder(QueueProcessingType.FIFO) // default
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
.memoryCacheSize(2 * 1024 * 1024)
.memoryCacheSizePercentage(13) // default
.diskCacheSize(50 * 1024 * 1024)
.diskCacheFileCount(100)
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
.imageDownloader(new BaseImageDownloader(mContext)) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs()
.build();
return config;
}
在HomeActivity中:[在我这样称呼的每个Activity中]
private void initImageLoader(){
UniversalImageLoader universalImageLoader = new UniversalImageLoader(mContext);
ImageLoader.getInstance().init(universalImageLoader.getConfig());
}
在所有这些活动中,我都在OnCreate方法中将其称为:
initImageLoader();
因此,我已阅读并查看了其他解决方案,但找不到可理解的答案...您的指导将不胜感激!
答案 0 :(得分:0)
简单来说,上下文基本上是应用程序/活动的句柄,然后可以用于访问特定于应用程序的资源和类,以及对诸如启动活动,广播之类的应用程序级操作的调用和接收意图等。
您可以通过调用getApplicationContext()
,getContext()
,requireContext()
,getBaseContext()
或this
来获得上下文(在从{{1 }},例如Context
,Application
,Activity
和Service
类。
这里有一个Mindorks article,可以帮助您了解有关上下文,使用方式和使用时间的基本知识。
答案 1 :(得分:0)
在构造函数中使用this.mContext = context;
,以便将您的上下文传递给当前类的上下文。
在使用此类的地方传递getApplicationContext
或yourActivityName.this
。
如果要分段使用它,请使用getActivity
或getContext
。