私は簡単なアプリをやっています.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