繁体   English   中英

Android File Manager仅允许我深入一个文件夹

[英]Android File Manager only allowing me to go one folder deep

我已经创建了将在其他程序中使用的文件管理器,但是我遇到了问题。 它显示了我的android手机上的文件列表,我可以深深地单击一个文件夹,但是如果超过一个,它将停止工作。 我主要是因为“ if(K.getAbsoluteFile()。isDirectory()== true)”,如果我摆脱了这一行,尽管它只是崩溃了。 因此,这似乎只允许我深入一个文件夹,有人可以找出我在这里做错了什么吗?

同样,任何指导或您对这个主题有什么了解,我都会发现它是对随机代码的一种混乱。


package book.BouncySquare;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class FileManager extends ListActivity {
    public File clickedFile = null;
    private List<String> directoryEntries = new ArrayList<String>();

    //private List<String> directoryEntries = new ArrayList<String>();
    private File currentDirectory = new File("/");

    @Override
    public void onCreate(Bundle icicle) {
        Log.d("startx", "start");
        super.onCreate(icicle);
        browseToRoot();
    }



    public void browseToRoot() {
        Log.d("Browse", "browse"+currentDirectory.getAbsoluteFile());
        browseTo(new File("/"));
    }



    private void browseTo(File file) {
        Log.d("mew", "too");
        if(file.isDirectory()){
            Log.d("check", "it");
        fill(file);     }
    }


    private void browse(String x) {
        Log.d("created", "newfile");
        final File K=new File(x);   
        Log.d("broke", "ass");
        if(K.getAbsoluteFile().isDirectory()==true){
        Log.d("Z"+K.getAbsoluteFile(), "directory");
        fill(K.getAbsoluteFile());}
        else{
            Log.d("X"+K.getName(), "NotADirectoryOrHidden");
            Log.d("A"+K.getAbsoluteFile(), "directory");
        }

    }



    private void fill(File files) {
        File[] meow=null;
        this.directoryEntries.clear();
        meow= files.listFiles();
        Log.d("sss", "sss");
        this.directoryEntries.add(getString(R.string.current_dir));// directoryentries is an arraylist that holds our Directories names
        this.directoryEntries.add(getString(R.string.up_one_level));
        for (File file : meow) {
            this.directoryEntries.add(file.getName());      //fill our string array directoryentries with each files getName, then we pass it to arrayAdapter to populate
            }
        ArrayAdapter<String> directoryList = new ArrayAdapter<String>(this,R.layout.file_row, this.directoryEntries); //our context,layout, and array of directories is created
        this.setListAdapter(directoryList);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        String clickedEntry =this.directoryEntries.get((int) id);
        Log.d("clickedID="+id, "clickedPosition="+clickedEntry);    
        browse(clickedEntry);
    }
}

尝试在当前目录之前添加要列出的目录。

private void browse(String x) {
    Log.d("created", "newfile");
    final File K=new File(currentDirectory, x);   
    Log.d("broke", "ass");
    if(K.getAbsoluteFile().isDirectory()==true){
    Log.d("Z"+K.getAbsoluteFile(), "directory");
    currentDirectory = K.getAbsoluteFile();
    fill(K.getAbsoluteFile());}
    else{
        Log.d("X"+K.getName(), "NotADirectoryOrHidden");
        Log.d("A"+K.getAbsoluteFile(), "directory");
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM