Java 若我不删除arraylist,程序就会关闭,它会显示我的歌曲,但程序不会打开

Java 若我不删除arraylist,程序就会关闭,它会显示我的歌曲,但程序不会打开,java,android-studio,arraylist,Java,Android Studio,Arraylist,我确实使用了这个视频Android Studio。但它不工作,因为私有的ArrayList readSongsFile根{},我想。。。所有程序都无法打开 MainActivity.java }扫描主线程中的sd卡根路径将消耗太多时间,可能会触发ANR,您应该异步调用您的方法。检查logcat以查看引发了什么异常,并通过堆栈跟踪 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import an

我确实使用了这个视频Android Studio。但它不工作,因为私有的ArrayList readSongsFile根{},我想。。。所有程序都无法打开

MainActivity.java


}

扫描主线程中的sd卡根路径将消耗太多时间,可能会触发ANR,您应该异步调用您的方法。

检查logcat以查看引发了什么异常,并通过堆栈跟踪
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.io.File;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity{
private ListView listView;
private String songNames[];
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listView = findViewById(R.id.listView);

    final ArrayList<File> songs = readSongs(Environment.getExternalStorageDirectory());

    songNames = new String[songs.size()];

    for(int i = 0; i < songs.size(); ++i){
        songNames[i] = songs.get(i).getName().toString().replace(".mp3","");
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.song_layout, R.id.textView,songNames);

    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            startActivity(new Intent(MainActivity.this, AudioPlayer.class).putExtra("position", i).putExtra("list", songs));
        }
    });
}

private ArrayList<File> readSongs(File root){
    ArrayList<File> arrayList = new ArrayList<File>();
    File files[] = root.listFiles();

    for(File file : files){
        if(file.isDirectory()){
            arrayList.addAll(readSongs(file));
        }else{
            if(file.getName().endsWith(".mp3")){
                arrayList.add(file);
            }
        }
    }
    return arrayList;
}