Итак, у меня есть простое приложение типа Soundboard, которое работает через ListView. Нажмите на элемент, он воспроизводит звук. У меня есть открытый статический int [] с именем soundResourceList, в котором есть такие записи, как R.raw.foo, R.raw.bar в том же порядке, что и записи, связанные с текстом в ListView.
Этот код работал для многих пользователей, включая меня, однако один недавно опубликовал исключение NullPointerException, в частности из строки setOnCompletionListener. Для меня это означает, что MediaPlayer.create вернул null, но я не могу понять, почему он не работает на их устройстве, а не на всех остальных.
public void onListItemClick(ListView parent, View v, int position, long id) {
MediaPlayer mp = MediaPlayer.create(getBaseContext(), soundResourceList[position]);
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
mp.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
Обычно NPE с MediaPlayer происходит из-за того, что он не выпускает свой предыдущий экземпляр, но я уже решил эту проблему, как показано в коде. Так что же мне не хватает, что может привести к сбою MediaPlayer.create ()?