【发布时间】:2019-05-12 15:35:07
【问题描述】:
我已尝试使用此代码,但无法从 onLoadFinished 方法检索数据,我得到 cursor.columnCount=7 和 cursor.getCount=0。每当我试图检索数据时 - cursor.getString(cursor.getColumnIndex(projection[0])) 我收到错误,说大小 0 和索引 0。
private static final String[] PROJECTION =
{
ContactsContract.Data.PHOTO_THUMBNAIL_URI,
ContactsContract.Data.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone._ID,
ContactsContract.CommonDataKinds.Email.ADDRESS,
ContactsContract.CommonDataKinds.Email.TYPE,
ContactsContract.CommonDataKinds.Email.LABEL,
ContactsContract.CommonDataKinds.Email.ADDRESS
};
private static final int DETAILS_QUERY_ID = 0;
private static final String SELECTION = ContactsContract.Data.LOOKUP_KEY + " = ?";
private String[] selectionArgs = { "" };
String lookupKey;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
lookupKey=getArguments().getString("LOOKUPKEY");
getLoaderManager().initLoader(DETAILS_QUERY_ID, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {
selectionArgs[0] = lookupKey;
return new CursorLoader(
getActivity(),
ContactsContract.Data.CONTENT_URI,
PROJECTION,
SELECTION,
selectionArgs,
null
);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
}
@Override
public void onLoaderReset(@NonNull Loader<Cursor> loader) {
}
}
【问题讨论】:
-
您的
lookupKey看起来如何?您可能错误地使用了错误的值,例如 lookupUri 或 contactId -
查找键给我的结果与联系人姓名相同
-
那段代码肯定有错,贴出来
-
看,当用户在 st 视图github.com/Thesohan/MyContactApp/blob/master/app/src/main/java/… 中单击特定行联系人时,我将查找键传递给详细信息片段
-
将
private static final int CONTACT_KEY_INDEX更改为 3,而不是 1。这应该表示投影数组中LOOKUP_KEY的索引
标签: android cursor android-contacts loader