我想检索我用于标签式用户界面的片段中的歌曲列表。
public void getSongList(){
ContentResolver musicResolver = getActivity().getContentResolver();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
if(musicCursor!=null && musicCursor.moveToFirst()){
//get columns
int titleColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media._ID);
int artistColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.ARTIST);
//add songs to list
do {
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
songList.add(new Song(thisId, thisTitle, thisArtist));
}
while (musicCursor.moveToNext());
}
// musicCursor.close();
}
我收到了songList.add()的NullPointerException,songList是已定义的ArrayList。
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
at com.musi.musi2.Tracks.getSongList(Tracks.java:60)
有人可以帮助我知道可能是什么原因吗?或者是否还有其他方法可以做到这一点。
此外,代码在MainActivity中使用时可以使用,而不是片段
P.S。我正在用手机测试应用程序,手机里有歌曲。
编辑:这不是重复的"什么是NullPointerException",我知道什么是好的,我的代码在MainActivity中使用getSongList()方法时工作,我想知道原因
答案 0 :(得分:0)
使用以下代码:
public void getSongList(){
songList = new ArrayList<>;
...
}