Из тонкой инструкции :
public int update (таблица строк, значения ContentValues, String whereClause, String [] whereArgs)
whereClause необязательное предложение WHERE, применяемое при обновлении. Передача null обновит все строки.
Ваш , где Claus выглядит так:
"starred='true'"
Заметили, что в этом фрагменте SQL у вас нет заполнителей (например, col = ?
)? Но вы предоставляете аргументы для несуществующих заполнителей в вашем аргументе whereArgs :
new String[]{starredvalue}
Таким образом, вызов update
ищет заполнитель номер один, а не находит его в whereClause , а затем вы получаете исключение «индекс вне диапазона».
Я уверен, что вы пытаетесь сделать, но, возможно, вы хотите, чтобы ваш whereClause был "starred = ?"
(вместо "starred='true'"
) или, возможно, null
, где Args .