【发布时间】:2017-02-03 06:05:01
【问题描述】:
我的 String[] 数组有问题。我从 Here 参考了这个问题 &Here
但是,我仍然没有从链接中找到任何解决方案。
我想要什么:
我正在开发一个自定义相机应用程序。我有一个文件夹,我在其中保存一个捕获的图像。此外,我有 1 个 ImageView。当我的应用启动时,文件夹的图像 [或位图] 被设置到该 ImageView 中(始终将文件夹的第一个图像设置为 ImageView)。
以下是我的代码。
private void loadImageInImageView() {
Uri[] mUrls;
String[] mFiles = new String[0];
File file = new File(android.os.Environment.getExternalStorageDirectory(), "CameraApp/Images");
File[] imageList = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File file, String name) {
return ((name.endsWith(".jpg")) || (name.endsWith(".png")) || (name.endsWith(".mp4")));
}
});
if (mFiles.length >= 0) {
Toast.makeText(this, "No Captured Images", Toast.LENGTH_SHORT).show();
} else {
mFiles = new String[imageList.length];
for (int i = 0; i < imageList.length; i++) {
mFiles[i] = imageList[i].getAbsolutePath();
}
mUrls = new Uri[mFiles.length];
for (int i = 0; i < mFiles.length; i++) {
mUrls[i] = Uri.parse(mFiles[i]);
imgBtnThumbnail.setImageURI(mUrls[i]);
}
}
}
在上面的代码中[当文件夹为空时]:
-
当我设置
if (mFiles.length > 0)它显示了一个错误
错误:尝试获取空数组的长度
-
当我设置
if (mFiles.length >= 0)然后它显示我和上面的错误一样。
-
当我设置
if (mFiles == null)它也不起作用,因为我已经在上面的代码中初始化了 String[]。
String[] mFiles = new String[0];因此它也不起作用。
当我有一些图像时,它工作正常。因为它执行了 else 部分。 我该怎么办?每当我的文件夹为空时,它就会向我显示一个 Toast。否则我的 else 代码将被执行。
任何帮助将不胜感激。
【问题讨论】:
-
您正在初始化大小为 0 的 mFiles 数组。 String[] mFiles = new String[0]
-
是的……我是这样做的……我读到了数组初始化应该从 0 开始。
-
^:D。这是数组的大小。如果使用
new String[100]初始化数组,它将从0开始并以99结束。 -
if (mFiles.length >= 0) {- 你正在检查一些奇怪的东西。数组的长度始终为非负数。但是,在这种情况下,它就更奇怪了,因为您检查了mFiles的大小,而mFiles在您创建它之后无法更改。我想你想检查imageList.length == 0 -
让它为空。检查是否为 null 然后显示 toast 否则对图像做一些事情