我在一个实现ImageLoader类的Activity中有这个方法:
public void imageLazy(final ImageView image,Project pro)
{
String imageurl = pro.smallImageUrl;
imageLoadery.displayImage(imageurl, activity,image);
}
但每次运行Activity时,应用程序都崩溃了。这一行有一个返回空指针
imageLoadery.displayImage(imageurl, activity,image);
它指的是ImageLoader类上此方法的第一行:
if(((String)photoToLoad.imageView.getTag()).equals(photoToLoad.url)){
BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad.imageView);
Activity a=(Activity)photoToLoad.imageView.getContext();
a.runOnUiThread(bd);
}
我所知道的,可能是null ist: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适配器中的方法为Tag添加了布局inflater,我在上面的活动中几乎不需要。
堆栈跟踪:
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)
答案 0 :(得分:1)
你错过了setTag
方法。希望它能运作。更改了imageLazy
方法。
public void imageLazy(final ImageView image,Project pro)
{
String imageurl = pro.smallImageUrl;
image.setTag(imageurl);
imageLoadery.displayImage(imageurl, activity,image);
}
答案 1 :(得分:0)
我所知道的,也许是null ist:tag, 网址或图片。
是哪一个?
我知道这不是一个正确的答案,但它足够长,也可以帮助你找到问题:
在大多数情况下调试NullPointerException并不困难。至少要把问题带到“没有参数是空的但是我得到NullPointerException”或“参数X为空”的水平,但我不明白为什么,这里我正在初始化它“如果你得到NullPointerException,检查你是否发送了一个null参数,或者访问的对象是否为null。如果你不知道使用调试器,你应该学习如何,但是你仍然可以添加一些检查以查看是否有任何参数是null并将相应的消息打印到日志中。
这不仅可以帮助我们理解问题并帮助您解决问题,还可以帮助您找到原因并在下次修复。