Android 字符串[]数组工作不正常

Android 字符串[]数组工作不正常,android,arrays,string,Android,Arrays,String,字符串[]数组有问题。我从 & 但是,我仍然没有从链接中找到任何解决方案 我想要什么: 我正在开发一个自定义相机应用程序。我有一个文件夹,在其中保存捕获的图像。此外,我还有一个ImageView。当我的应用程序启动时,文件夹的图像[或位图]被设置到该ImageView中(始终将文件夹的第一个图像设置到ImageView中) 下面是我的代码 private void loadImageInImageView() { Uri[] mUrls; String[] mFi

字符串[]数组有问题。我从 &

但是,我仍然没有从链接中找到任何解决方案

我想要什么:

我正在开发一个自定义相机应用程序。我有一个文件夹,在其中保存捕获的图像。此外,我还有一个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]);
            }
        }
    }
private void loadImageInImageView(){
Uri[]mUrls;
字符串[]mFiles=新字符串[0];
File File=新文件(android.os.Environment.getExternalStorageDirectory(),“CameraApp/Images”);
File[]imageList=File.listFiles(新文件名过滤器(){
@凌驾
公共布尔接受(文件、字符串名称){
返回((name.endsWith(“.jpg”))| |(name.endsWith(“.png”))| |(name.endsWith(“.mp4”));
}
});
如果(mFiles.length>=0){
Toast.makeText(这是“无捕获图像”,Toast.LENGTH_SHORT).show();
}否则{
mFiles=新字符串[imageList.length];
对于(int i=0;i
在上述代码中[当文件夹为空时]:

  • 当我设置
    if(mFiles.length>0)

    它向我显示了一个错误

  • 错误:尝试获取空数组的长度

  • 当我设置
    if(mFiles.length>=0)

    然后它显示了与上面相同的错误

  • 当我设置
    if(mFiles==null)

    它也不工作,因为我在上面的代码中初始化了字符串[]

    String[]mFiles=新字符串[0]
    因此,它也不起作用

  • 当我有一些图像时,它工作正常。因为它执行了其他部分。 我该怎么办?只要我的文件夹是空的,它就会给我一个祝酒词。否则我的else代码就会被执行

    任何帮助都将不胜感激。

    private void loadImageInImageView(){
    
    private void loadImageInImageView() {
            Uri[] mUrls;
            File[] imageList
    
            File file = new File(android.os.Environment.getExternalStorageDirectory(), "CameraApp/Images");
    
            imageList = file.listFiles(new FilenameFilter() {
                @Override
                public boolean accept(File file, String name) {
                    return ((name.endsWith(".jpg")) || (name.endsWith(".png")) || (name.endsWith(".mp4")));
                }
            });
    
            if (imagelist==null && imageList.length == 0) {
                Toast.makeText(this, "No Captured Images", Toast.LENGTH_SHORT).show();
            } else {
    
                for (int i = 0; i < imageList.length; i++) {
    
                    imgBtnThumbnail.setImageURI(Uri.parse(imageList[i].getAbsolutePath()););
                }
            }
        }
    
    Uri[]mUrls; 文件[]图像列表 File File=新文件(android.os.Environment.getExternalStorageDirectory(),“CameraApp/Images”); imageList=file.listFiles(新文件名过滤器(){ @凌驾 公共布尔接受(文件、字符串名称){ 返回((name.endsWith(“.jpg”))| |(name.endsWith(“.png”))| |(name.endsWith(“.mp4”)); } }); if(imagelist==null&&imagelist.length==0){ Toast.makeText(这是“无捕获图像”,Toast.LENGTH_SHORT).show(); }否则{ 对于(int i=0;i
    试试这个; 但由于for循环,您的图像不断变化

    private void loadImageInImageView(){
    Uri[]mUrls;
    文件[]图像列表
    File File=新文件(android.os.Environment.getExternalStorageDirectory(),“CameraApp/Images”);
    imageList=file.listFiles(新文件名过滤器(){
    @凌驾
    公共布尔接受(文件、字符串名称){
    返回((name.endsWith(“.jpg”))| |(name.endsWith(“.png”))| |(name.endsWith(“.mp4”));
    }
    });
    if(imagelist==null&&imagelist.length==0){
    Toast.makeText(这是“无捕获图像”,Toast.LENGTH_SHORT).show();
    }否则{
    对于(int i=0;i
    试试这个;
    但由于for循环,您的图像不断变化

    不要初始化多文件。在添加一些数据时初始化它。 要检查它是否为空,请使用以下命令:

    if (mFiles != null && mFiles.length > 0) {
        ...
    }
    

    不要初始化mFiles。在添加一些数据时初始化它。 要检查它是否为空,请使用以下命令:

    if (mFiles != null && mFiles.length > 0) {
        ...
    }
    

    如果您想要的函数在图像列表的大小大于零时工作,请尝试下面的代码

    private void loadImageInImageView() {
    
        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")));
            }
        });
    
        // conditional operator [ ? : ]
        // value = (experssion) ? value if true : value if false
        // ref : https://www.tutorialspoint.com/java/java_basic_operators.htm
        int imgLength = imageList == null ? 0 : imageList.length;
    
        if(imgLength > 0)
        {
            String[] mFiles =  new String[imgLength];
            Uri[] mUrls = new Uri[imgLength];
    
            //merge for condition
            for (int i = 0; i < imgLength; i++) {
                mFiles[i] = imageList[i].getAbsolutePath();
                mUrls[i] = Uri.parse(mFiles[i]);
                imgBtnThumbnail.setImageURI(mUrls[i]);
            }
        }
        else
        {
            Toast.makeText(this, "No Captured Images", Toast.LENGTH_SHORT).show();
        }
    }
    
    private void loadImageInImageView(){
    File File=新文件(android.os.Environment.getExternalStorageDirectory(),“CameraApp/Images”);
    File[]imageList=File.listFiles(新文件名过滤器(){
    @凌驾
    公共布尔接受(文件、字符串名称){
    返回((name.endsWith(“.jpg”))| |(name.endsWith(“.png”))| |(name.endsWith(“.mp4”));
    }
    });
    //条件运算符[?:]
    //value=(expersion)?如果值为真:如果值为假
    //参考:https://www.tutorialspoint.com/java/java_basic_operators.htm
    
    int imgLength=imageList==null?0:imageList.length; 如果(imgLength>0) { 字符串[]mFiles=新字符串[imgLength]; Uri[]mUrls=新Uri[imgLength]; //合并条件 对于(int i=0;i
    如果您想要的函数在图像列表的大小大于零时工作,请尝试下面的代码

    private void loadImageInImageView() {
    
        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")));
            }
        });
    
        // conditional operator [ ? : ]
        // value = (experssion) ? value if true : value if false
        // ref : https://www.tutorialspoint.com/java/java_basic_operators.htm
        int imgLength = imageList == null ? 0 : imageList.length;
    
        if(imgLength > 0)
        {
            String[] mFiles =  new String[imgLength];
            Uri[] mUrls = new Uri[imgLength];
    
            //merge for condition
            for (int i = 0; i < imgLength; i++) {
                mFiles[i] = imageList[i].getAbsolutePath();
                mUrls[i] = Uri.parse(mFiles[i]);
                imgBtnThumbnail.setImageURI(mUrls[i]);
            }
        }
        else
        {
            Toast.makeText(this, "No Captured Images", Toast.LENGTH_SHORT).show();
        }
    }
    
    private void loadImageInImageView(){
    File File=新文件(android.os.Environment.getExternalStorageDirectory(),“CameraApp/Images”);
    File[]imageList=File.listFiles(新文件名过滤器(){
    @凌驾
    公共布尔接受(文件、字符串名称){
    return((name.endsWith(“)。