0

Ceci est ma première question. Il donne NullPointerException dans la ligne media.release(). sortie exacte est NullPointerException (@ $ ProgressDetailRecyclerViewAdapter 5: onCompletion: 308) {main}Android MediaPlayer OnCompletion NullPointerException

public void play(String fileURL) { 

    try { 
     mediaPlayer = new MediaPlayer(); 
     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     mediaPlayer.setDataSource(fileURL); 
     mediaPlayer.prepare(); 
     mediaPlayer.start(); 
     mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mp) { 
       mediaPlayer.release(); //line 308 
       mediaPlayer = null; 
      } 
     }); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

changement 'mediaPlayer.release()' 'à mp.release();' –

Répondre

0

Essayez cette

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mp) { 
       mp.release(); //line 308 
       mp= null; 
      } 
     }); 
+0

Hey rapide Apprenant, mp.stop() est requis ou pas au-dessus de mp.release() –

+0

avez-vous appelé mp.stop(); ? –

0

La variable qui est transmis à votre méthode onCompletion est nommé mp, non mediaPlayer. Il est possible que votre variable mediaPlayer ait été annulée depuis son initialisation, provoquant l'erreur. Modifiez le code à:

@Override 
public void onCompletion(MediaPlayer mp) { 
    mp.release(); //line 308 
    mp = null; 
} 
+0

Hey Jokab, mp.stop() est requis ou pas au-dessus de mp.release() –

+0

@UpendraSinghChauhan il n'y a pas de 'mp.stop' dans votre code. Je ne comprends pas ce que tu veux dire. – Jokab

+0

oui, ce n'est pas écrit dans ma question, mais je demande que mp.stop() soit requis ou non avant de libérer les ressources (mp.release). Est-ce une bonne pratique d'utiliser ça, c'est ce que je voulais savoir. Je suis nouveau au développement android. –

0
@Override 
      public void onCompletion(MediaPlayer **mp**) { 
       **mediaPlayer**.release(); //line 308 
       mediaPlayer = null; 
      } 

utiliser le bon objet mp au lieu de MediaPlayer dans cette méthode

+0

Hey Uma, mp.stop() est requis ou pas au-dessus de mp.release() –