2015-03-17 2 views
0

Я получаю строку из объекта изображения (моего собственного определенного класса). Это блок кода, где происходящей ошибка, на 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 
+1

Вы должны установить TAG и строку ... например: Log.d («LOG_KEY», «Date:» + изображение. GetDate()); – Opiatefuchs

+0

есть некоторый код println, который бросает ошибку, вы можете поделиться этим также – Fahim

+0

@Fahim, это сообщение об ошибке также выбрано для журнала – Opiatefuchs

ответ

0

вы не можете разделить пробелом, используя " ", оно должно быть, например, "\\s+" (все пробелы). обратите внимание, что split принимает регулярное выражение, doc here

редактировать: неправильные ANS, spliting по " " возможно в Java, мой плохой :)

+0

, что может быть правдой, но это не ответ на вопрос .... – Opiatefuchs

+0

Я отредактировал мой ans, check out – snachmsm

+0

Правда, что! Это java, а не python для разделения строки с использованием .split (''): D – lucifer

1

Вы, кажется, говорят, что NPE выбрасывается в Log.d вызова здесь:

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

Это значит, что image.getDate() возвращается null.

Однако я довольно подозрительно отношусь к доказательствам, которые вы предоставляете здесь. В соответствии с javadoc для android.media.Image не существует метода getDate().

+0

автор вопроса дает журнал и есть 'com.example.sanj.flowt D /: 30 08 2014', поэтому он хорошо печатает без тег – snachmsm

+0

За исключением того, что автор >> сказал <<, что NPE был выброшен »на 4-й строке (журнал)» ... который я понимаю как обозначенная строка. –

+0

Кроме того, строка журнала с датой может быть просто объяснена другим экземпляром 'Image', который имеет непустую дату. Обратите внимание, что вызов 'Log.d' находится в цикле ... –

0

Также просто, Вы должны задать строку:

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

это зависит от типа, которые получают возвращенный. Например, если image.getDate() вернет тип String, то вам не нужно делать это, как я показал (если вы уверены, что он не возвращает null). Но если он возвращает что-то еще, вы должны это сделать. Вот как это описано в API, то второй параметр должен быть строкой:

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

Если Вы делаете это, как это и image.getDate() возвращает нуль, исключение не выбрасывается. Тогда вывод будет: «Date: null», если этот метод возвращает null. Это безопасный способ сделать это.

любое изображение, например, Stepehn C. said: Изображение не имеет метода getDate(), поэтому я подозреваю, что вы создали пользовательский класс, который называется Image. Это не должно быть сделано, потому что есть класс андроида, который называется Image

+0

Вам не нужно устанавливать строку. Я не делал этого один раз в течение всего проекта, и все печатает отлично. Однако, спасибо. –

+0

см. Мой отредактированный ответ .... – Opiatefuchs

+0

это правильно. Хотя это не решило проблему, приятно дать лучшее объяснение, если другие придут к этому и узнают что-то. –

Смежные вопросы