Android中ImageLoader类中的java.lang.NullPointerException错误

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

我在实现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);
                    }
但每次我运行活动时,应用程序都会崩溃。这行有一个返回空指针

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太棒了!太棒了,谢谢你一步一步地解决这个问题。我学到了很多。不管怎样,你介意检查一下我的这个问题吗?谢谢