Android 无法在索引3处绑定参数,因为该索引超出范围。该语句有1个参数

Android 无法在索引3处绑定参数,因为该索引超出范围。该语句有1个参数,android,android-cursor,Android,Android Cursor,我在下面的代码中得到了错误。根本原因是什么 Cursor cursor = context.getContentResolver().query( TaskEntry.CONTENT_URI, null, TaskEntry.COLUMN_TASK_STATUS + "=?", new String[]{TaskStatus.NEW.name(), TaskStatus

我在下面的代码中得到了错误。根本原因是什么

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
        );
根本原因是什么

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
        );
where子句/string
TaskEntry.COLUMN\u TASK\u STATUS+“=?”,
只有一个“占位符”,
=?
,但您为替换提供了三条不同的信息

新字符串[]{TaskStatus.new.name(),TaskStatus.FINISHED.name(),TaskStatus.DELETED.name()}


的数量必须与
字符串的数组大小相匹配。所以在你的情况下,应该只有一个。正如
@Gabe
所指出的,如果您想获取具有这些值之一的列,您可以在
中使用
,如果您想查看该值是否为三个值中的任何一个,请执行“tasking.COLUMN\u TASK\u STATUS IN(value1、value2、value3)”谢谢、@Gabe和Blackbelt