-2

Je veux récupérer la liste des chansons dans un fragment que j'utilise pour l'interface utilisateur à onglets.Essayer d'obtenir la liste de chansons dans un fragment donne nullpointerexception

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(); 
} 

Je reçois un NullPointerException pour songList.add(), songList est un ArrayList déjà défini. Est-ce que quelqu'un peut m'aider s'il vous plaît savoir quelle peut être la raison ?, ou s'il y a une autre façon de le faire.

En outre, le code fonctionne lorsqu'il est utilisé dans MainActivity au lieu du fragment

post-scriptum J'utilise un téléphone pour tester l'application, et j'ai des chansons dans le téléphone.

Edit: Ce n'est pas un doublon de "Qu'est-ce que NullPointerException", je sais ce que c'est correct, Mon code fonctionne quand la méthode getSongList() est utilisée dans MainActivity et je veux connaître la raison.

+4

double possible de [? Qu'est-ce qu'un NullPointerException, et comment puis-je résoudre ce problème] (http://stackoverflow.com/questions/218384/what-is-a- nullpointerexception-and-how-do-i-fix-it) –

+0

vous n'avez peut-être pas été initialisé votre 'arrayList' – Nikhil

+0

Initialisez votre' ArrayList' aussi fermez votre curseur à la fin de votre 'if (musicCursor! = null && musicCursor. moveToFirst()) ', après votre boucle while. –

Répondre

0

utilisation ci-dessous le code:

public void getSongList(){ 
songList = new ArrayList<>; 

... 

} 
+0

Et comment est-ce utile, comment va-t-il accéder à la liste après la fin de la méthode? –