Java NullPointerException L'Obtention De Ressources
Je suis en train d'écrire une simple application Android (qui est principalement pour moi de tester tout ce que je peut avoir besoin de l'utiliser dans une application réelle) et j'ai besoin d'utiliser un lecteur multimédia pour jouer un son. Dans ce cas, je suis en utilisant kalimba.mp3
(sans majuscule). Mais quand j'essaye d'exécuter l'application, il instantanément se bloque en raison d'une référence d'objet nul. L'erreur est au-dessous, comme c'est mon code. Le problème est, je ne vois pas le problème avec quoi que ce soit, et il me donne pas d'erreur lors de l'édition de mon code. Comment puis-je arrêter ce de lancer une erreur? Je n'ai jamais utilisé un lecteur multimédia avant. Merci à l'avance!
Code:
//Player of "kalimba.mp3"
private MediaPlayer kalimbaPlayer = MediaPlayer.create(this, R.raw.kalimba);
//Play/stop the sound
public void playSound(View view) { kalimbaPlayer.start(); }
public void stopSound(View view) { kalimbaPlayer.stop(); kalimbaPlayer.release(); }
Erreur:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
- Où est-ce code (la classe)? Ne
playSound
etstopSound
besoin d'être public? Il semble qu'ils sont sur les auditeurs qui vous lient à des boutons dans XML - faites-vous appel à eux d'ailleurs? Si non, alors ils sont probablement pas pertinente à ce problème, étant donné que vous avez l'expérience de ce crash dès que vous exécutez l'application (sans appuyer sur un bouton)
Vous devez vous connecter pour publier un commentaire.
this
est sans doute votre Activité. Au moment où les champs sont initialisés, l'Activité n'est probablement pas tout à fait prêts.Au lieu de cela, utilisez le lecteur multimédia à l'intérieur de la onCreate() la méthode de l'Activité.
private MediaPlayer kalimbaPlayer;
où il est (notez le point virgule). Puis dans votreonCreate()
, vous permet d'initialiser la variable uniquement (ne pas déclarer de nouveau):kalimbaPlayer = MediaPlayer.create(this, R.raw.kalimba);
private MediaPlayer kalimbaPlayer
comme variable membre. Mais, initialiserkalimbaPlayer = MediaPlayer.create(this, R.raw.kalimba);
à l'intérieur de laonCreate()
méthode.créer une variable Globale dans votre classe
Après cette
Maintenant, l'utilisateur mRes objet pour obtenir des ressources....
Par exemple
mRes.getString(R.string.SEARCH);
vous avez utilisé onCreate
kalimbaPlayer = MediaPlayer.créer(nameActivity.cette, R. raw.kalimba);
pm . nameActivity = nameActivity classe