вторник, 1 мая 2012 г.

Android - ошибка OutOfBounds


Если вы видите ошибку:
E/AndroidRuntime(499): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

Это значит, что вы пытаетесь обратиться к объекту, которого нет в массиве.

Скорее всего, проблема заключается в том, что вы не проверили кол-во возвращаемых строк после выполнения запроса или не вызвали метод moveToFirst() у объекта типа Cursor:

cursor.moveToFirst();

Весь код выглядит так:
  1. Cursor cursor = myDataBase.query("table_name"new String[] {"text"}nullnullnullnull"Random()""1");
  2.        
  3. if ( cursor.getCount() > 0){
  4.     cursor.moveToFirst();
  5.     return cursor.getString(0);        
  6. } else {
  7.     return "Нет записей";
  8. }

    В примере, выбирается случайная запись из таблицы вида:

    _id    text
     1     Слон
     2     Жираф
     ...   ...
     404   Кот