为什么在打印值时会出现空指针异常?

时间:2015-03-17 12:25:57

标签: android logging nullpointerexception

我从图像(我自己定义的类)对象中获取一个字符串。这是发生错误的代码块,在第4行(Log):

for (int i = 0; i < imageList.size(); i++) {

        Image image = imageList.get(i);
        Log.d("", image.getDate());
        String[] date = image.getDate().split(" ");

然后在控制台中打印出第1行的日期值,那么问题是什么?

03-17 12:22:09.054  20832-20832/com.example.sanj.flowt D/﹕ 30 08 2014
03-17 12:22:09.054  20832-20832/com.example.sanj.flowt D/AndroidRuntime﹕ Shutting down VM
03-17 12:22:09.054  20832-20832/com.example.sanj.flowt W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x415cddb8)
03-17 12:22:09.054  20832-20832/com.example.sanj.flowt E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.sanj.flowt, PID: 20832
    java.lang.NullPointerException: println needs a message

3 个答案:

答案 0 :(得分:1)

你好像在说这个NPE在Log.d这里打电话:

Log.d("", image.getDate());

这意味着image.getDate()正在返回null

但是,我对你在这里提供的证据非常怀疑。根据{{​​1}}的{​​{3}},不存在android.media.Image方法。

答案 1 :(得分:0)

你不能使用" "按空格分割,它应该是例如"\\s+"(所有空格)。请注意split需要regexp,doc here

编辑:错误的ans,用" "分割是可能的,我的坏:)

答案 2 :(得分:0)

同样简单,你必须设置一个字符串:

 Log.d("LOG_KEY","Date:"+image.getDate());

这取决于返回的类型。例如,如果image.getDate()将返回一个String类型,那么你不需要像我所示的那样(如果你确定它不返回null)。但如果它返回别的东西,你必须。这是它在API中的描述,第二个参数必须是String:

developer.android.com/reference/android/util/Log.html

如果你这样做并且image.getDate()返回null,则不会抛出异常。然后输出将是:“Date:null”,如果此方法返回null。这是一种安全的方式。

无论是什么形象,像Stepehn C.所说,Image没有方法getDate(),所以我怀疑你已经创建了一个名为Image的自定义类。不应该这样做,因为有一个名为Image

的android类