2013-06-17 3 views
0

Donc j'utilise ce code pour accéder aux données de la chanson que je veux jouer mais je reçois une exception de pointeur nul chaque fois que j'utilise un lecteur multimédia.J'ai utilisé toast pour vérifier si le nom de fichier est le chemin du fichier est correct ou pas mais son coming out est très bien.Null Pointer dans OnListItemClick

protected void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
    // super.onListItemClick(l, v, position, id); 
    // l.setClickable(false); 
     music_column_index = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); 
          musiccursor.moveToPosition(position); 
          String filename = musiccursor.getString(music_column_index); 

         try { 
         mMediaPlayer.setDataSource(filename); 
         mMediaPlayer.prepare(); 
         mMediaPlayer.start(); 
        } catch (IllegalArgumentException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (SecurityException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IllegalStateException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

     Toast.makeText(getApplicationContext(),filename, Toast.LENGTH_LONG).show(); 

    } 

Je reçois une erreur sur cette ligne

mMediaPlayer.setDataSource(filename); 

Logcat: -

06-17 17:31:36.716: E/AndroidRuntime(5059): FATAL EXCEPTION: main 
06-17 17:31:36.716: E/AndroidRuntime(5059): java.lang.NullPointerException 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at prac.tise_music.MainActivity.onListItemClick(MainActivity.java:136) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at android.app.ListActivity$2.onItemClick(ListActivity.java:342) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at android.widget.ListView.performItemClick(ListView.java:3569) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1831) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at android.os.Handler.handleCallback(Handler.java:587) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at android.os.Handler.dispatchMessage(Handler.java:92) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at android.os.Looper.loop(Looper.java:150) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at android.app.ActivityThread.main(ActivityThread.java:4389) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at java.lang.reflect.Method.invoke(Method.java:507) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
06-17 17:31:36.716: E/AndroidRuntime(5059):  at dalvik.system.NativeStart.main(Native Method) 
+0

afficher les stacktrace – Blackbelt

+0

add logcat ici ... – AndroidLearner

+0

vérifier que l'on est nulle, ou mMediaPlayer filename ... – WarrenFaith

Répondre

0

Il y a un type similaire de problème est discuté here.

Peut-être servir votre but.

Une autre suggestion, Essayez MediaPlayer.create(), vous pouvez également commencer seulement après que le joueur est en fait prêt, comme this:

+0

Hey son sort out.Problem était dans l'initialisation du lecteur multimédia. –

+0

@HimanshuVerma bon à savoir :) – AndroidLearner

0

si vous la lecture du fichier de stockage externe, puis d'abord donner « lecture autorisation de stockage externe » dans votre Manifiest. parce que vous n'êtes pas capable de lire le fichier.

+0

Il n'y a aucun problème dans la lecture de fichier que le problème vient seulement quand j'utilise Media Player. Sinon, j'utilise toast pour imprimer le chemin du fichier et sa sortie correcte. –

+0

long id =/* le récupérer de quelque part * /; Uri contentUri = ContentUris.withAppendedId ( android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id); mMediaPlayer = nouveau MediaPlayer(); mMediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC); mMediaPlayer.setDataSource (getApplicationContext(), contentUri); // ... préparer et commencer ... – abhi