java - 无法从图像数组列表加载 imageView

标签 java android android-resources android-imagebutton

在此,我需要使用本地保存的 .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: No package identifier when getting value for resource number 0x0000007b 11-21 17:54:48.904 27250-27250/com.datamation.swdsfa W/ImageView: Unable to find resource: 123 android.content.res.Resources$NotFoundException: Resource ID #0x7b at android.content.res.Resources.getValue(Resources.java:2350) at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:330) at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:433) at android.support.v7.widget.VectorEnabledTintResources.getDrawable(VectorEnabledTintResources.java:67) at android.widget.ImageView.resolveUri(ImageView.java:648) at android.widget.ImageView.setImageResource(ImageView.java:377) at com.test.ABC.fragment.FragmentTools.ViewImageList(FragmentTools.java:342) at com.test.ABC.fragment.FragmentTools.onClick(FragmentTools.java:287) at android.view.View.performClick(View.java:4640) at android.view.View$PerformClick.run(View.java:19421) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java:5602) at 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) at dalvik.system.NativeStart.main(Native Method)

提前致谢。

最佳答案

您正在使用的方法imageView.setImageResource(resID);适用于 drawable 中存在的图像文件夹,但正如你所说的 From internal storage of the device I collect the images found on particular folder.似乎您正在尝试使用存储在内部存储中某个目录中的图像。所以这是行不通的。

Check this

你可以尝试这样的事情,

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 - 无法从图像数组列表加载 imageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58975106/

相关文章:

java - 继承this和super

android - 有类似 "ON DELETE NULL"的东西吗?

java - Android:抽屉导航图标

android - 我到这里来将图像添加到我的 android 应用程序,但有一条错误行

Java Generics WildCard - 如何在此处将泛型与 Lambda 一起使用?

java - 在字符串列表中查找字谜词

java - 如何实现带有超时的 Runnable?

android - 有意回到之前的 Activity

android - 如何在 android 中的谷歌(设备) native 应用程序上添加自定义按钮?

android - 从 xml 资源加载后更新/更改 Android 中的动画