2017-02-03 19 views
2

Я получил ошибку в нижнем коде. В чем причина?Невозможно связать аргумент с индексом 3, потому что индекс выходит за пределы диапазона. У оператора есть 1 параметр

Cursor cursor = context.getContentResolver().query(
       TaskEntry.CONTENT_URI, 
       null, 
       TaskEntry.COLUMN_TASK_STATUS + "=?", 
       new String[]{TaskStatus.NEW.name(), TaskStatus.FINISHED.name(), TaskStatus.DELETED.name()}, 
       null 
     ); 

ответ

3

Что первопричина?

ваш где положение/строка TaskEntry.COLUMN_TASK_STATUS + "=?", имеет только один «заполнитель», =?, но вы обеспечиваете три различные части информации для замещения,

new String[]{TaskStatus.NEW.name(), TaskStatus.FINISHED.name(), TaskStatus.DELETED.name()}

количество ? должен соответствовать размер массива String. Поэтому в вашем случае это должно быть только одно. Как отметил @Gabe, вы можете использовать либо IN или OR если вы хотите извлечь столбцы с одним из этих значений

+0

@JiYa, если вы хотите, чтобы увидеть, если значение любого из этих трех значений делают «TaskEntry.COLUMN_TASK_STATUS IN (значение1, значение2, значение3) " –

+0

Спасибо, @Gabe и Blackbelt –