从mediastore返回空指针[重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

显示方法程序

void display() {
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
    ContentResolver contentResolver = getActivity().getContentResolver();
    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor cursor = contentResolver.query(uri, null, selection, null, null);

    if (cursor != null && cursor.moveToFirst()) {
        int songTitle = cursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
        int songArtist = cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
        do {
            int i = 0;
            String title = cursor.getString(songTitle);
            String artist = cursor.getString(songArtist);
            songsList.add(title + "\n" + artist);
            i++;
        } while (cursor.moveToNext());
    }
    cursor.close();
    songsList = new ArrayList<>();
    songsAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, songsList);
    l1.setAdapter(songsAdapter);

    l1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        }
    });
}

显示方法出错

2019-03-05 23:16:59.323 504-504/? E/ANDR-IOP: IOP HAL: Received pkg_name = com.noob.audioplayer pid = 0 2019-03-05 23:16:59.723 18049-18049/com.noob.audioplayer E/AndroidRuntime: FATAL EXCEPTION: main Process: com.noob.audioplayer, PID: 18049 java.lang.NullPointerException: Attempt to invoke virtual method 'void java.util.ArrayList.add(int, java.lang.Object)' on a null object reference at com.noob.audioplayer.SongsFragment.display(SongsFragment.java:137) 
android nullpointerexception fragment android-mediaplayer mediastore
1个回答
0
投票

您正在尝试添加到未创建的songslist。在添加之前创建歌曲列表如下:

void display() {
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
    ContentResolver contentResolver = getActivity().getContentResolver();
    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor cursor = contentResolver.query(uri, null, selection, null, null);
    songsList = new ArrayList<>();
    if (cursor != null && cursor.moveToFirst()) {
        int songTitle = cursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
        int songArtist = cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
        do {
            int i = 0;
            String title = cursor.getString(songTitle);
            String artist = cursor.getString(songArtist);
            songsList.add(title + "\n" + artist);
            i++;
        } while (cursor.moveToNext());
    }
    cursor.close();
    songsAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, songsList);
    l1.setAdapter(songsAdapter);
    l1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        }
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.