Не могу найти где ошибка, подскажите пожалуйста я новичок

263
28 апреля 2017, 17:50
public class MainActivity extends ListActivity {
private List<String> mPathList = null;
private String root = "/"; // символ для корневого элемента
private TextView mPathTextView;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mPathTextView = (TextView) findViewById(R.id.textViewPath); // здесь будем выводить текущее местоположение
    getDir(root); // выводим список файлов и папок в корневой папке системы
}
private void getDir(String dirPath) {
    mPathTextView.setText("Путь: " + dirPath); // где мы сейчас
    List<String> itemList = new ArrayList<>();
    mPathList = new ArrayList<>();
    File file = new File(dirPath);
    File[] filesArray = file.listFiles(); // получаем список файлов
    // если мы не в корневой папке
    if (!dirPath.equals(root)) {
        itemList.add(root);
        mPathList.add(root);
        itemList.add("../");
        mPathList.add(file.getParent());
    }
    // формируем список папок и файлов для передачи адаптеру
    for (File aFilesArray : filesArray) {
        file = aFilesArray;
        mPathList.add(file.getPath());
        if (file.isDirectory()) // Это папка
            itemList.add(file.getName() + "/");
        else
            itemList.add(file.getName());
    }
    // Можно выводить на экран список
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
            R.layout.list_item, itemList);
    setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    // обработка нажатий на элементах списка
    File file = new File(mPathList.get(position));
    // если это папка
    if (file.isDirectory()) {
        if (file.canRead()) // если она доступна для просмотра, то заходим в неё
            getDir(mPathList.get(position));
        else { // если папка закрыта, то сообщаем об этом
            new AlertDialog.Builder(this)
                    .setIcon(R.mipmap.ic_launcher)
                    .setTitle(
                            "[" + file.getName()
                                    + "] папка не доступна!")
                    .setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                                    int which) {
                                }
                            }).show();
        }
    } else { // если элемент списка является файлом, то выводим его имя
        String fileInfo = "Абсолютный путь: " + file.getAbsolutePath()
                + "\n" + "Путь: " + file.getPath() + "\n" + "Родитель: "
                + file.getParent() + "\n" + "Имя: " + file.getName() + "\n"
                + "Последнее изменение: " + new Date(file.lastModified());
        new AlertDialog.Builder(this)
                .setIcon(R.mipmap.ic_launcher)
                .setTitle("[" + file.getName() + "]")
                .setMessage(fileInfo)
                .setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                                int which) {
                            }
                        }).show();
    }
}
}

В onCreate методе getDir(root); и private void getDir в строке for (File aFilesArray : filesArray) возникает ошибка

Caused by: java.lang.NullPointerException: Attempt to get length of null array
at com.example.rhinocerology.filesmanager.MainActivity.getDir(MainActivity.java:50)at 
com.example.rhinocerology.filesmanager.MainActivity.onCreate(MainActivity.java:31)
Answer 1

Ну скорее всего File[] filesArray = file.listFiles(); возвращает null и скорее всего потому, что не верный путь (нет разрешения на доступ к файловой системе, например).

READ ALSO
Как объединить C и java?

Как объединить C и java?

Нужно написать мобильное приложение на android, но основная часть кода (так сказать, ядро) должна быть написана на СиМожно ли как-то объединить...

251
Внезапный crash

Внезапный crash

Удаляю элемент списка, он удаляется, но крэшится приложение

197
Listener для jSpinner - действие по нажатию клавиши Enter

Listener для jSpinner - действие по нажатию клавиши Enter

Есть небольшое оконное приложение на SwingНа форме JFrame form расположены текстовые поля и объект jSpinner spinner

358
Как распарсить такую строку?

Как распарсить такую строку?

У меня есть строка такого типа

436