java - 无法从图像数组列表加载 imageView
问题描述
因此,我需要使用本地保存的 .png 文件动态加载图像按钮。从设备的内部存储中,我收集在特定文件夹中找到的图像。它工作正常。
List<String> fileNames = new ArrayList<>();
File folder = new File(Environment.getExternalStorageDirectory(), "Pictures/Screenshots");
if (!folder.exists()) folder.mkdir();
for (File file : folder.listFiles()) {
String filename = file.getName().toLowerCase();
if (filename.endsWith(".jpg") || filename.endsWith("jpeg") || filename.endsWith(".png")) {
fileNames.add(filename);
}
}
将结果记录为
[123.png]
最后,我需要将图像按钮的背景设置为 123.png 图像。为此,我在循环中使用了
String picName = fileNames.get(i);
String picName1 = picName.replace(".png", "");
int resID = getResources().getIdentifier(picName1,"drawable","com.test.ABC");
imageView.setImageResource(resID);
在那一刻我得到了这个错误
11-21 17:54:48.899 27250-27250/com.datamation.swdsfa W/ResourceType:获取资源编号 0x0000007b 的值时没有包标识符 11-21 17:54:48.904 27250-27250/com.datamation.swdsfa W/ ImageView:无法找到资源:123 android.content.res.Resources$NotFoundException:android.content.res.Resources.getValue(Resources.java:2350) 上 android.support.v7.widget.AppCompatDrawableManager 的资源 ID #0x7b。 loadDrawableFromDelegates(AppCompatDrawableManager.java:330) 在 android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:433) 在 android.support.v7.widget.VectorEnabledTintResources.getDrawable(VectorEnabledTintResources.java:67) 在 android.widget .ImageView.resolveUri(ImageView.java:648) 在 android.widget。ImageView.setImageResource(ImageView.java:377) 在 com.test.ABC.fragment.FragmentTools.ViewImageList(FragmentTools.java:342) 在 com.test.ABC.fragment.FragmentTools.onClick(FragmentTools.java:287) 在 android .view.View.performClick(View.java:4640) 在 android.os.Handler.handleCallback(Handler.java:733) 在 android.view.View$PerformClick.run(View.java:19421) 在 android.os。 Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:146) 在 android.app.ActivityThread.main(ActivityThread.java:5602) 在 java.lang.reflect.Method.invokeNative (Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) at com.android.internal.os .ZygoteInit.main(ZygoteInit.java:1099) 在 dalvik.system.NativeStart.main(Native Method)
提前致谢。
解决方案
您使用的方法imageView.setImageResource(resID);
是用于文件夹中存在的图像drawable
,但正如您所说,您From internal storage of the device I collect the images found on particular folder.
似乎正在尝试使用存储在内部存储中某个目录中的图像。所以它不会工作。
你可以试试这样的
File file = new File("some path");
if(file.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
imageView.setImageBitmap(myBitmap);
}
要获取默认相机目录的路径,您可以尝试,
File picDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File file = new File(picDir, "your image.png");
推荐阅读
- java - java.text.ParseException:无法解析的日期:“2/9/2016 10:30:00 AM (GMT-05:00) 东部时间(美国和加拿大)”
- java - 如何使用异常处理来完全停止执行?
- html - 当我使用平滑滚动时,Bootstrap 置顶导航栏重叠内容
- r - 在列表中保存多个带有整体图例的图,以使用 marrangeGrob cowplot 在多个页面上绘制
- sql - 在 MERGE 语句中替代 EXCEPT?
- javascript - 如何使用 Puppeteer 检查特定脚本元素是异步还是延迟
- html - 在Angular 8中提交成功后如何清除验证错误?
- flutter - 在屏幕底部移动 Stack 的子项
- javascript - div内滚动amchart图
- c# - 与 REST 客户端应用程序共享实体框架生成的模型的方法