2012-02-17 4 views
0

이 코드에서 오류가 계속 발생합니다. 연락처를 데이터베이스에 저장하는 방법을 알고 있습니다. 왜냐하면 내가 cdata/cdata2를 꺼내서 문자열을 넣으면 잘 작동하기 때문입니다. 어떤 도움을 주시면 감사하겠습니다.앱 데이터베이스에 연락처 저장 CursorIndexOutOfBoundsException

연락처의 문자열을 허용하도록 변환하려면 어떻게해야합니까?

switch (item.getItemId()) { 

    case 1: 
     //Save current contact to stash database 
     Cursor phones2 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null, null); 
     String cdata = phones2.getString(phones2.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
     String cdata2 = phones2.getString(phones2.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     ContentValues values=new ContentValues(2);   
     values.put(DatabaseHelper.NAME, cdata); 
     values.put(DatabaseHelper.cALUE, cdata2); 
     db.getWritableDatabase().insert("constants", DatabaseHelper.NAME, values); 
     constantsCursor.requery();    
     //Refresh contact list 
     Intent refresh = new Intent(this, MainTab.class); 
     startActivity(refresh); 
     this.finish(); 

     return(true); 
     case 2: 
      //uncoded option 
      Toast.makeText(this, "here is the info", Toast.LENGTH_SHORT).show(); 
    } 

ERROR : android.database.CursorIndexOutOfBoundsException이 커서가 준비되지 않습니다 전화없이 지수는 -1, 당신은 Cursor.moveToFirst()를 호출하는 것을 잊었다 2

답변

2

의 크기, 요청 읽어야한다.

//Save current contact to stash database 
    Cursor phones2 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null, null); 
    if (phone2.moveToFirst()) { 
    String cdata = phones2.getString(phone ...... 
+0

예처럼 시도하지만 그냥 "CDATA"문자열이 커서의 첫 번째 위치를 당겨 수 있습니다. 목록의 위치와 일치해야합니다. – LuisCamarena

+0

호출 할 수있는 커서와 목록 위치를 일치 시키려면 phones2.moveToPosition (int) – iago

관련 문제