陷入循环?应用程序没有崩溃,但没有任何显示或工作

时间:2014-11-27 01:08:52

标签: android for-loop arraylist

我有一个方法应该返回" item"的一个arraylist。 (包含三个字符串,name,imageurl,audiourl)。

在文件系统中,我在同一文件夹中有相应的文件名(扩展名jpg,png,mp3除外)。

我试图搜索该文件夹并收集所有匹配jpg / png到mp3的文件。把它放在arraylist中。

我虽然用这段代码:

   public ArrayList<PictureItem> getArrayOfPictureItemFromFolder(String directoryPath) {
    ArrayList<PictureItem> arrayOfPictureItems = new ArrayList<PictureItem>();
    PictureItem pi;
    File directory = new File(directoryPath);
    File[] imageListing = directory.listFiles(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            if (name.toLowerCase().endsWith(".png")) {
                return name.toLowerCase().endsWith(".png");
            }
            if (name.toLowerCase().endsWith(".jpg")) {
                return name.toLowerCase().endsWith(".jpg");
            } else {
                return false;
            }
        }
    });

    File[] audioListing = directory.listFiles(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            return name.toLowerCase().endsWith(".mp3");
        }
    });

    if (imageListing != null) {
        for (int i = 0; i < imageListing.length; i++) {
            String imagePath = imageListing[i].toString();
            String imagetitle = imageListing[i].getName();
            int removeImageExtension = imagetitle.lastIndexOf(".");
            if (removeImageExtension > 0) {
                imagetitle = imagetitle.substring(0, removeImageExtension);
            }
            for (int j = 0; j < audioListing.length; i++) {
                String audioPath = audioListing[j].toString();
                String audioTitle = audioListing[j].getName();
                int removeAudioExtension = audioTitle.lastIndexOf(".");
                audioTitle = audioTitle.substring(0, removeAudioExtension);
                if (imagetitle.equals(audioTitle)) {
                    pi = new PictureItem(imagePath, imagetitle);
                    pi.setSoundPath(audioPath);
                    arrayOfPictureItems.add(pi);
                }
            }
        }


    } else {
        return null;
    }


    return arrayOfPictureItems;

}

但由于某些原因,当我启动代码时,它只会进入黑屏,我无法回到&#34;到带有后退按钮的主菜单。

Logcat不断重复这一点(让它运行一段时间)。

11-27 01:59:29.778    7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC   
freed 3072K (98250), 43% free 4233K/7424K, paused 22ms, total 22ms
11-27 01:59:29.939    7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC   
freed 3072K (98250), 43% free 4233K/7424K, paused 21ms, total 21ms
11-27 01:59:30.108    7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC 
freed 3072K (98250), 43% free 4233K/7424K, paused 25ms, total 25ms
11-27 01:59:30.278    7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC 
freed 3072K (98250), 43% free 4233K/7424K, paused 21ms, total 21ms
11-27 01:59:30.439    7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC 
freed 3072K (98250), 43% free 4233K/7424K, paused 22ms, total 22ms
11-27 01:59:30.611    7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC 
freed 3072K (98250), 43% free 4233K/7424K, paused 21ms, total 21ms
11-27 01:59:30.778    7424-7424/picturedtalk.com.picturedtalk D/dalvikvm﹕ GC_FOR_ALLOC 
freed 3072K (98250), 43% free 4233K/7424K, paused 22ms, total 22ms

我知道应用程序的其余部分在我刚扫描完目录并将所有内容添加到arraylist而没有排序名称时有效。我试图设置断点并在调试模式下运行,但它拒绝停止该代码中的任何位置,包括预启动代码。 if if //除了返回arrayOfPictureItems之外的所有内容,app返回按钮再次起作用,断点也是如此...

1 个答案:

答案 0 :(得分:1)

你的第二个for循环增加i而不是j - 所以j永远不会改变。