0

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

1 に答える 1

1

cursor.moveToFirst()最初に電話する必要があります。カーソルの最初の位置は常に -1 です。

于 2012-04-01T02:13:00.143 に答える