Android中ImageLoader类中的java.lang.NullPointerException错误
我在实现ImageLoader类的活动中有此方法:Android中ImageLoader类中的java.lang.NullPointerException错误,android,Android,我在实现ImageLoader类的活动中有此方法: public void imageLazy(final ImageView image,Project pro) { String imageurl = pro.smallImageUrl; imageLoadery.displayImage(imageurl, activity,image); } if(((String)photoToLoad.imageView.getTag()).equ
public void imageLazy(final ImageView image,Project pro)
{
String imageurl = pro.smallImageUrl;
imageLoadery.displayImage(imageurl, activity,image);
}
if(((String)photoToLoad.imageView.getTag()).equals(photoToLoad.url)){
BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad.imageView);
Activity a=(Activity)photoToLoad.imageView.getContext();
a.runOnUiThread(bd);
}
但每次我运行活动时,应用程序都会崩溃。这行有一个返回空指针
imageLoadery.displayImage(imageurl, activity,image);
它指的是ImageLoader类上此方法的第一行:
public void imageLazy(final ImageView image,Project pro)
{
String imageurl = pro.smallImageUrl;
imageLoadery.displayImage(imageurl, activity,image);
}
if(((String)photoToLoad.imageView.getTag()).equals(photoToLoad.url)){
BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad.imageView);
Activity a=(Activity)photoToLoad.imageView.getContext();
a.runOnUiThread(bd);
}
我所知道的可能是:tag
,url
,或者image
仅供参考,上面的方法也适用于下面我的listview适配器。也许这可以作为帮助您解决我的案件的参考:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
// Inflate the view
if (convertView == null) {
convertView = mInflater.inflate(resource, null);
holder = new ViewHolder();
holder.image = (ImageView) convertView.findViewById(R.id.image);
holder.textTitle = (TextView) convertView
.findViewById(R.id.txt_title);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Project project = items.get(position);
holder.textTitle.setText(project.project_title);
String imageurl = project.smallImageUrl;
holder.image.setTag(imageurl);
imageLoader.displayImage(imageurl, activity, holder.image);
return convertView;
}
让我感到困难的是,ListView适配器中的方法为标记应用布局充气器,我在上面的活动中几乎不需要它
更新
堆栈跟踪:
05-16 09:02:00.758: INFO/System.out(441): http://cdn.spendino.de/web/img/projects/home/1263830540.jpg
05-16 09:02:00.769: INFO/System.out(441): spendino.de.Main@43d17ab0
05-16 09:02:00.778: INFO/System.out(441): android.widget.ImageView@43d041f0
05-16 09:02:00.778: INFO/System.out(441): http://cdn.spendino.de/web/img/projects/home/1263997113.jpg
05-16 09:02:00.801: INFO/System.out(441): spendino.de.Main@43d17ab0
05-16 09:02:00.829: INFO/System.out(441): android.widget.ImageView@43d17bd0
05-16 09:02:00.829: INFO/System.out(441): http://cdn.spendino.de/web/img/projects/home/1290615697.jpg
05-16 09:02:00.829: INFO/System.out(441): spendino.de.Main@43d17ab0
05-16 09:02:00.829: INFO/System.out(441): android.widget.ImageView@43d18098
05-16 09:02:01.398: INFO/ActivityManager(33): Displayed activity spendino.de/.Main: 3891 ms (total 3891 ms)
05-16 09:02:01.948: WARN/dalvikvm(441): threadid=15: thread exiting with uncaught exception (group=0x4001b188)
05-16 09:02:01.958: ERROR/AndroidRuntime(441): Uncaught handler: thread Thread-9 exiting due to uncaught exception
05-16 09:02:01.978: ERROR/AndroidRuntime(441): java.lang.NullPointerException
05-16 09:02:01.978: ERROR/AndroidRuntime(441): at spendino.de.ImageLoaderCache$PhotosLoader.run(ImageLoaderCache.java:244)
我所知道的可能是空的标签,
url或图像
那是哪一个?
我知道这不是一个正确的答案,但它足够长,可以帮助你找到问题:
大多数情况下,调试NullPointerException并不难。至少要把问题带到“没有一个参数是空的,但是我得到了一个NullPointerException”或者“参数X是空的”的级别,但我不明白为什么,我在这里初始化它如果获得NullPointerException,请检查是否发送了null参数,或者访问的对象是否为null。如果您不知道如何使用调试器,您应该了解如何使用调试器,但您仍然可以添加一些检查,以查看是否有任何参数为null,并将适当的消息打印到日志中
这不仅有助于我们了解问题并帮助您解决问题,而且有助于您找到原因并在下次解决问题。您错过了
setTag
方法。希望它能起作用。更改了imageLazy
方法
public void imageLazy(final ImageView image,Project pro)
{
String imageurl = pro.smallImageUrl;
image.setTag(imageurl);
imageLoadery.displayImage(imageurl, activity,image);
}
在这一行之后
imageLoadery.displayImage(imageurl、活动、图像)
将这些行放入System.out.println(imageurl);系统输出打印项次(活动);System.out.println(图像)代码>并让我知道输出哇,谢谢!我刚刚发现“活动”是空的。有什么线索我下一步该做什么吗?所以我只添加了这一行:activity=Main.this;在onCreate内部,system.out显示activity不再为null,但应用程序仍然崩溃,原因是nullPointerExceptiondone,请查看if(((字符串)photoToLoad.imageView.getTag()).equals(photoToLoad.url)){BitmapDisplayer bd=new BitmapDisplayer(bmp,photoLoad.imageView);activity a=(activity)photoToLoad.imageView.getContext();a.runUnuithRead(bd);}
。。。。。。。打印photoToLoad.imageView.getTag()
,photoToLoad.url
,imageView
,bd
的输出,我知道我得到了它,我已经初始化了变量(请参见上面的注释)并对其进行了调试,但应用程序仍然因NullPointerException而崩溃。也许你能帮我?Thxworks太棒了!太棒了,谢谢你一步一步地解决这个问题。我学到了很多。不管怎样,你介意检查一下我的这个问题吗?谢谢