Избегать IllegalArgumentException при использовании NULL в качестве значения заполнителя в запросе? - PullRequest
1 голос
/ 28 августа 2011

Я пытаюсь получить фотографию контактов у контент-провайдеров, и у меня возникла проблема с этим запросом.

Cursor photo = cr.query( 
                   PicURI,  
                   new String[] {
                      CommonDataKinds.Photo.PHOTO
                   }, 
                   Data._ID + "=?",  
                   new String[] { photoId }, 
                   null);

Это связанная строка из logcat:
java.lang.IllegalArgumentException: the bind value at index 1 is null

После некоторых тестов я понял, что получаю это исключение, если для одного из контактов не задано изображение.

Я искал и нашел эту такую ​​же проблему. Похоже, это ошибка. И я не могу решить это. Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 28 августа 2011

Вы, конечно, не хотите находить фотографии с id = null, поэтому вы должны использовать этот код:

if (photoId != null) {
   //your code here
}

Было бы неплохо, если бы вы разместили полную трассировку стека.

1 голос
/ 28 августа 2011

Вы правы - это та же проблема, что и эта:

http://code.google.com/p/android/issues/detail?id=7636

Вы также правы, что это ошибка.

"Ошибка" в вашем коде. Вам нужно проверить свои аргументы на «null», и вы НЕ должны выполнять запрос или обновление, если какой-либо из ваших входных параметров имеет значение null!

Два варианта:

if (myphoto[i] == null)
  query.bindNull(i)

... или ...

if (myphoto[i] != null)
  query ()

ВАША ответственность за проверку и очистку ВАШИХ данных перед вызовом API ...

ИМХО ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...