Log.d不打印消息

时间:2016-09-10 16:23:58

标签: android logging

我在使用带有以下代码的Log语句时收到错误 java.lang.NullPointerException:println需要消息

 for (Application app : mApplications) {
            Log.d("LOG", "********");
            Log.d("LOG", app.getName());
            Log.d("LOG", app.getArtist());
            Log.d("LOG", app.getReleaseDate());

        }

但在第二个参数中,如果我在引号之间添加另一个字符串,则错误消失

for(Application app: mApplications){
            Log.d("LOG", "******************");
            Log.d("LOG","Name: " +app.getName());
            Log.d("LOG","Artist: " +app.getArtist());
            Log.d("LOG","ReleaseDate: " +app.getReleaseDate());

        }

两者有什么区别?

2 个答案:

答案 0 :(得分:1)

不同之处在于您已将字符串与null变量连接在一起。

Log需要非空消息字符串。

或者,这也有效,因为它会打印"null"但看起来不干净

Log.d("LOG", String.valueOf(app.getName()));
Log.d("LOG", String.valueOf(app.getArtist()));
Log.d("LOG", String.valueOf(app.getReleaseDate()));

答案 1 :(得分:0)

首先,如果您使用的是Log.d,它通常用于调试,这是Log.d d(String tag, String msg, Throwable tr)的正确语法。为了更好地理解See this

在你的情况下首先你正在使用这个

for (Application app : mApplications) {
        Log.d("LOG", "********");
        Log.d("LOG", app.getName());
        Log.d("LOG", app.getArtist());
        Log.d("LOG", app.getReleaseDate());

    }

并生成此错误java.lang.NullPointerException: println needs a message,因为您无法按照Log.d语法规则放置消息。

我希望你明白......