我在下面的代码中发现了错误。根本原因是什么?

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子句/stringTaskEntry.COLUMN_TASK_STATUS + "=?",只有一个“占位符”=?,但是您提供了三个不同的替换信息,
new String[]{TaskStatus.NEW.name(), TaskStatus.FINISHED.name(), TaskStatus.DELETED.name()}
?的数目必须与String数组的大小匹配。所以在你的情况下应该只有一个。正如@Gabe所指出的,如果要获取具有这些值之一的列,可以使用INOR

09-28 05:25