Подтвердить что ты не робот

NullPointerException: println нуждается в сообщении в android

в моем медиаплеере я играю песню с SDCard. он показывает ошибку как NullPointerException: println нуждается в сообщении e в android. я пробовал много времени, но я не знаю, почему. Помогите мне.

код:

    try {
        mediaPlayer = new  MediaPlayer();
        mediaPlayer.setDataSource("/sdcard/t1.mp3");
        seek.setMax(mediaPlayer.getDuration());
        mediaPlayer.prepare();
        mediaPlayer.start();
        mediaPlayer.setOnCompletionListener(this);          
    }
    catch(Exception ex){
        Log.e("sdcard-err2:",ex.getMessage());  //  null pointer exception : println needs a message 
    }  

Лог кот:

     05-16 19:27:54.491: ERROR/AndroidRuntime(6889): Caused by: java.lang.NullPointerException: println needs a message
     05-16 19:27:54.491: ERROR/AndroidRuntime(6889):     at android.util.Log.println(Native Method)
     05-16 19:27:54.491: ERROR/AndroidRuntime(6889):     at android.util.Log.e(Log.java:208)
     05-16 19:27:54.491: ERROR/AndroidRuntime(6889):     at com.seek.bar.media3.onCreate(media3.java:43)
     05-16 19:27:54.491: ERROR/AndroidRuntime(6889):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
     05-16 19:27:54.491: ERROR/AndroidRuntime(6889):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
     05-16 19:27:54.491: ERROR/AndroidRuntime(6889):     ... 11 more
4b9b3361

Ответ 1

В уловке используйте:

String err = (ex.getMessage()==null)?"SD Card failed":ex.getMessage();
Log.e("sdcard-err2:",err);  

Ответ 2

Для всех, кто получает это, попробуйте заменить вызов одиночного метода или имя переменной на "" + varName.

Например,

Log.d("LOGCAT", getErrorMsg());

становится

Log.d("LOGCAT", "" + getErrorMsg());

Ответ 3

Может быть, просто нет прикрепленного сообщения в исключении, которое вы ловите. Попробуйте ex.printStackTrace(); вместо. Надеюсь, это поможет.

Ответ 4

Другим способом, который может быть использован, является использование Log.getStackTraceString(e), например:

Log.e(TAG, Log.getStackTraceString(e));

Подробнее об этом можно узнать в Документация для Android.

Ответ 5

"println нуждается в megssage" - это очень запутанное сообщение для получения (по крайней мере для меня), когда вообще не используется метод println(...)!!!

В моем случае и во всех случаях, которые генерируют этот тип ошибок, есть созвездие, за которым вы должны следить:

try{
...
}catch(..){
  // in here there is a reference to the Logger
}

Теперь проблема в том, что в вашем блоке try{...} вы используете неинициализированную ссылку или какой-то старый экземпляр, который теперь указывает на null

Настройте точку останова в самом начале блока try и отлаживайте свой код шаг за шагом, вы обнаружите, что в какой-то момент код попытается получить доступ к методам некоторого объекта, который является нулевым.

В этом случае я склонен обвинять ваш объект seek!

С уважением.