我有一种方法可以读取图像的外部存储空间。我想将这些图像存储在ImageView ArrayList中。要做到这一点,我已经定义了我想要搜索的文件夹,并创建了一个Bitmap变量,该变量被分配了我想要修改为ImageView的图像,但.setImageBitmap(saveImage)
未分配给我的Imageview对象。.setImageBitmap()为什么不将图像分配给ImageView对象?
下面的代码:
private ArrayList<ImageView> getData() {
ImageView singleImage = null;
final ArrayList<ImageView> addImage = new ArrayList<>();
File retrieveImages = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "/WordResolver");
for(File countImages : retrieveImages.listFiles()) {
if(countImages.isFile() && (countImages.getName().endsWith(".jpg"))) {
Bitmap saveImage = BitmapFactory.decodeFile(countImages.getAbsolutePath());
singleImage.setImageBitmap(saveImage); //Fails here
addImage.add(singleImage);
}
}
return addImage;
}
这里的证明,图像被读取并存储在Bitmap对象。
及这里的抛出,即使ImageView的应用图像被分配一个NPE错误的堆栈跟踪。
3月5日至20日:13:38.220 8641-8641/com.example.aaron.wordresolver E/AndroidRuntime:致命异常:主 工艺:com.example.aaron.wordresolver,PID:8641 的java。 lang.RuntimeException:无法启动活动ComponentInfo {com.example.aaron.wordresolver/com.example.aaron.wordresolver.PictureGallery}:java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.ImageView.setImageBitmap( android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2)上的null对象引用 (android.graphics.Bitmap) 476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102 ) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:java.lang.NullPointe rException:尝试在空对象引用 上的com.example.aaron.wordresolver.PictureGallery.getData(PictureGallery.java:78) 上调用虚拟方法'void android.widget.ImageView.setImageBitmap(android.graphics.Bitmap)' at android.app.Activity.performCreate(Activity.java:6237) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) )在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThrea在android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper()。 .loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os。ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
您没有将任何imageview分配给“singleImage”,这就是为什么它是空的。 –
是'singleImage.setImageBitmap(saveImage);'没有给ImageView分配一个_bitmap_从而给它一个值? – COYG
@COYG:do this like singleImage =(ImageView)view.findViewById(R.id.your_imageview); –