NullPointerException:println需要android中的消息
在我的媒体播放器中,我从SD卡播放歌曲。 它显示错误为NullPointerException:println在android中需要一个消息e。 我试了很久,但是我不知道原因。请帮助我。
码:
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
在捕获中,使用:
String err = (ex.getMessage()==null)?"SD Card failed":ex.getMessage(); Log.e("sdcard-err2:",err);
对于任何获得这个的人来说,尝试用“”+ varNamereplace单独的方法调用或variables名称。
例如,
Log.d("LOGCAT", getErrorMsg());
变
Log.d("LOGCAT", "" + getErrorMsg());
也许没有什么信息附加在你正在捕捉的exception中。 试试ex.printStackTrace();
代替。 希望这可以帮助。
另一种可以使用的方法是Log.getStackTraceString(e),例如:
Log.e(TAG, Log.getStackTraceString(e));
您可以在Android文档中阅读更多。
“println需要一个消息”是一个非常混乱的消息(至less对我来说),当不使用println(...)
方法!
就我而言,在这种情况下,所有导致这种types错误的情况都有一个星座,你必须注意:
try{ ... }catch(..){ // in here there is a reference to the Logger }
现在的问题是,在你的try{...}
块中,你正在使用未初始化的引用或者一些旧的实例,它们现在指向null
在try块的开始处设置一个断点并逐步debugging你的代码,你会发现在某些时候代码将尝试访问一些null对象的方法。
在这种情况下,我倾向于责怪你的seek
目标!
问候。