public void displaySong(){
        final ArrayList<File> mySongs = findSong(Environment.getExternalStorageDirectory());
        if (!mySongs.isEmpty()){
            items = new String[mySongs.size()];
            for (int i = 0; i< mySongs.size(); i++){
                items[i] = mySongs.get(i).getName().toString().replace(".mp3","").replace(".wav","");
            }
        }
        customAdapter customAdapter = new customAdapter();
        listView.setAdapter(customAdapter);
    }

Пожалуйста, кто-нибудь, решите проблему в этом методе, из-за которой я получил ошибку «Попытка получить длину нулевого массива».

-2
Priyanshu Mallick 1 Окт 2022 в 20:05
Я не вижу нигде в приведенном выше коде, где вы получаете длину массива. Вы уверены, что это код, который генерирует исключение? Пожалуйста, проверьте номер файла/строки, указанный в трассировке стека.
 – 
Tenfour04
1 Окт 2022 в 20:08
Поделиться трассировкой стека @priyanshu mallick
 – 
Shivam Som
1 Окт 2022 в 20:09

2 ответа

Nullpointer, вероятно, исходит из строки:

!mySongs.isEmpty()

Изменить условное на:

mySongs != null && !mySongs.isEmpty()

Или просто исправьте метод findSong, чтобы он возвращал пустой список, а не нуль

0
notAPPP 1 Окт 2022 в 20:15

Предположим, у вас есть проблема со списком mySongs. Вы должны выполнить нулевую проверку перед использованием mySongs.

if (mySongs != null &&!mySongs.isEmpty()){
            items = new String[mySongs.size()];

Или у вас проблема с массивом items, объявленным где-то еще в вашем классе.

items равно null, если mySongs.isEmpty(). Поэтому вы должны выполнить нулевую проверку items перед использованием items.length. Или вы должны назначить new String [0] в блоке else.

if (!mySongs.isEmpty()){
        items = new String[mySongs.size()];
        for (int i = 0; i< mySongs.size(); i++){
            items[i] = mySongs.get(i).getName().toString().replace(".mp3","").replace(".wav","");
        }
    } else {
        items = new String[0];
    }
}
0
Michael Katt 1 Окт 2022 в 20:22