我正在做一个简单的应用程序,我有一个edittext字段和一个按钮,按钮有一个onclick事件。代码如下所示:
private static final int CONTACT_PICKER_RESULT = 1;
public void doLaunchContactPicker(View view) {
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
}
我正在调用联系人选取器活动,当我选择一个联系人时,我想在edittext字段中填充该联系人的名称。
代码如下所示:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
String contactname = "";
// use the contact provider to get the contact details
Uri result = data.getData();
Cursor cursor = getContentResolver().query(result, null, null, null, null);
int idx = cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID);
contactname = cursor.getString(idx);
EditText name = (EditText) findViewById(R.id.editText1);
name.setText(contactname);
cursor.close();
}
所有这些代码都包含在主活动的onCreate()
中。
当我在模拟器中运行应用程序并点击按钮时,我会得到联系人列表(我在模拟器上创建了3个联系人)。当我选择联系人时,DDMS中出现错误。错误是:
06-09 19:24:16.188: ERROR/AndroidRuntime(7158): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
您必须首先调用cursor.moveToFirst()
。光标的第一个位置总是-1。