2013-03-17 26 views
1

我目前的工作有哪些使用LazyLoader方法,所以我ahve以下类填充的列表中的应用:LazyLoader imageLoader空指针异常?

FileCache.java, ImageLoader.java, LazyAdapter.java, Utils.java

基本上图像加载fin当我填充列表,但是我想然后显示选定的单个项目视图上的选定列表项的图像时,它被选中。所以,当用户点击一个列表项时,他们将被带到一个新的活动,以查看该项目周围的所有细节。为了节省数据库调用我收集了所有需要的数据在列表中把它藏在现场,然后我用下面的方法将它传递给单个项目视图:

String ImageURL = ((TextView) view.findViewById(R.id.ImageURL)).getText().toString(); 

Intent i = new Intent(getApplicationContext(), VenueItem.class); 

i.putExtra("ImageURL", ImageURL); 

startActivity(i); 

这则将该URL传递和一堆我发送到新Activity的其他数据。当它使用下面的方法达到了新的活动我读数据:

String image_url; 

Intent i = getIntent(); 

image_url = i.getStringExtra("ImageURL"); 

ImageView thumb_image=(ImageView) findViewById(R.id.itemImage); // thumb image 

imageLoader.DisplayImage(image_url, thumb_image); //This is the line it fails on 

正如你可以看到我已经强调了上面它似乎失败行,我得到一个NullPointerException错误,即使我已经调试代码,当它击中那条线时,它传递的2个参数都存在。对于图像加载器的代码如下:

final int stub_id = R.drawable.noimage; 
    public void DisplayImage(String url, ImageView imageView) 
    { 
     imageViews.put(imageView, url); 
     Bitmap bitmap=memoryCache.get(url); 
     if(bitmap!=null) 
      imageView.setImageBitmap(bitmap); 
     else 
     { 
      queuePhoto(url, imageView); 
      imageView.setImageResource(stub_id); 
     } 
    } 

我认为这是事做,我也许调用图像加载器的方式,有人可以帮我这个,因为它是那么讨厌?或者有人可以告诉我一个更好的方式来获取已经缓存并显示在列表中的图像,以显示单项活动?

感谢

+0

安置自己的logcat跟踪 – Pragnani 2013-03-17 19:33:27

+0

调试应用程序,并检查它们具有空值。 – 2013-03-17 19:35:17

回答

2

这听起来很蠢,但你实际实例ImageLoader的?因为你没有包含它的代码;)

看起来好像也许imageLoader变量是什么是null,而不是你传入它的image_url和thumb_image。

试图运行

imageLoader.DisplayImage(image_url, thumb_image); 

将导致一个NullPointerException如果ImageLoader的是空例如你已经宣布它但不实例化它:

ImageLoader imageLoader; 

这将需要

ImageLoader imageLoader = new ImageLoader(); 
+0

非常感谢我的帮助,我似乎已经迷失在代码的某个地方,忘了做那个哈哈:) – user723858 2013-03-18 17:18:05

+1

没问题,它很容易做到! – Ellis 2013-03-18 17:25:45

+0

@Ellis帮了我很多。感谢一堆:) – berserk 2013-12-09 11:00:54