В моем коде есть раздражающая ошибка, и я не могу спать из-за этого!Продолжайте получать NullPointerException для MediaPlayer
Я как-то понимаю, почему я могу получить его - я думаю, что-то связано с методом onCreate
.
Это то, что у меня есть:
public class PredefinedUserPlayer extends Activity {
MediaPlayer mediaPlayer;
String names;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.userdefplayer);
names = "http://X.X.X.X/musikz/musikz01.mp3";
mediaPlayer = new MediaPlayer();
}
public void playSelectedFile() {
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(PredefinedUserPlayer.this, Uri.parse(names));
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.start();
}
}
Метод playSelectedFile()
вызывается в другом классе, и вот что бит кода здесь:
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PredefinedUserPlayer predefinedUserPlayer = new PredefinedUserPlayer()
predefinedUserPlayer.playSelectedFile();
}
});
Я не могу иметь MediaPlayer
в этом классе, поэтому мне пришлось создать экземпляр класса PredefinedUserPlayer
. Это фактический трассировки стека (возможно, кто-то может помочь мне отлаживать и исправить эту досадную ошибку):
java.lang.NullPointerException
at android.content.ContextWrapper.getContentResolver(ContextWrapper.java:99)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:882)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:859)
at lukasz.musik.PredefinedUserPlayer.playSelectedFile(PredefinedUserPlayer.java:86)
at lukasz.musik.CustomMusicAdapter$ViewHolder$1.onClick(CustomMusicAdapter.java:85)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Замечательный, человек, который закрыл это пометил его как DUP другой вопрос помечается как DUP, который не отвечает на вопрос. –
Точно! Мне пришлось переписываться, так как у меня никогда не было ответа на последний пост. @EJP, это действительно поможет, если вы перестанете отмечать мои сообщения как 'duplicate'. Они НЕ дубликаты, и если вы не можете ответить на вопрос, тогда не трогайте мой OP, пожалуйста! –
Я проверил этот код. Замените его методом playSelectFile(). public void playSelectedFile() { mediaPlayer = новый MediaPlayer(); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC); нить Thread = новый Thread() { @Override общественности недействительным запуска() { попытка { mediaPlayer.setDataSource ("http://programmerguru.com/android-tutorial/wp-content/uploads/2013/04/ hosannatelugu.mp3"); } catch (IOException e) { e.printStackTrace(); } –