我总是写这样的代码:
Cursor c = getContentResolver().query(uri,
PHONE_LOOKUP_PROJECTION, null, null, null);
if (c != null) {
if (c.moveToFirst()) {
bundle.contactId = c.getLong(LOOKUP_ID_COLUMN_INDEX);
bundle.name = c.getString(LOOKUP_DISPLAY_NAME_COLUMN_INDEX);
}
c.close();
}
但如果有必要检查c
是否为NULL,我会加倍。因为我觉得值查询返回总是不为null,即使它什么都不包含。
答案 0 :(得分:2)
相信我你必须检查它是否为空(如果你愿意,我会做'必须'发光并跳转),如果你想避免光标相关的崩溃,特别是当您对数据源进行重新查询和数据更新。你现在正在正确地做到这一点。始终检查null并始终检查moveToFirst()返回的布尔值。