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

时间:2011-05-16 08:02:11

标签: android

我在一个实现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:tagurlimage

仅供参考,上面的方法也适用于我的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)

2 个答案:

答案 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并将相应的消息打印到日志中。

这不仅可以帮助我们理解问题并帮助您解决问题,还可以帮助您找到原因并在下次修复。