04-01 10:11:25.194: WARN/dalvikvm(613): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
04-01 10:11:25.215: ERROR/AndroidRuntime(613): Uncaught handler: thread main exiting due to uncaught exception
04-01 10:11:25.356: ERROR/AndroidRuntime(613): java.lang.NullPointerException
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.AbsListView.obtainView(AbsListView.java:1274)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.ListView.makeAndAddView(ListView.java:1668)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.ListView.fillDown(ListView.java:637)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.ListView.fillFromTop(ListView.java:694)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.ListView.layoutChildren(ListView.java:1521)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.AbsListView.onLayout(AbsListView.java:1113)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.view.View.layout(View.java:6830)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.view.View.layout(View.java:6830)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.view.View.layout(View.java:6830)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.view.View.layout(View.java:6830)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.view.ViewRoot.performTraversals(ViewRoot.java:996)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.os.Looper.loop(Looper.java:123)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at android.app.ActivityThread.main(ActivityThread.java:4363)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at java.lang.reflect.Method.invokeNative(Native Method)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at java.lang.reflect.Method.invoke(Method.java:521)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-01 10:11:25.356: ERROR/AndroidRuntime(613):     at dalvik.system.NativeStart.main(Native Method)
여기까지 에러내용입니다 ㅠㅠ
뭐가 잘못인지 모르겠어요..

에러는 분명 listView.setOnItemClickListener(new OnItemClickListener(){
즉.. 리스너가 실행되기 전에 난건대요.
그럼 화면에라도 목록을 출력해야 하는데 그렇지 않아요 ㅠㅠ

알려주세요
C:\Android\workspace\SosAndroid\src\com\sos\android\CallContacts
package com.sos.android;
C:\Android\workspace\SosAndroid\src\com\sos\android\CallContacts
import android.app.ListActivity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
C:\Android\workspace\SosAndroid\src\com\sos\android\CallContacts
public class CallContacts extends ListActivity {
 public static final int CONTACT = 1;
 public ContactsDbAdapter Contacts_DB;
 String tag = null;
 
 int rowId;
 String contact_name;
 String ContactId;
 Cursor phones;
 Cursor db_cursor;
 String contact_number;
 
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      
        //DB 열기
        Contacts_DB = new ContactsDbAdapter(this);
        Contacts_DB.open();
        
        db_cursor = Contacts_DB.getNumber();
      
        final Cursor cursor = getURI();     // 전화번호부 가져오기
        
     int end = cursor.getCount();    // 전화번호부의 갯수 세기
     Log.d(tag, "end = "+end);
C:\Android\workspace\SosAndroid\src\com\sos\android\CallContacts
     String [] name = new String[end]; // 전화번호부의 이름을 저장할 배열 선언
     
     int count = 0;
     int db_count = 0;
     int db_end = db_cursor.getCount();
     boolean isfirst_cursor = false;
     Log.d(tag, "end = "+db_end);
        
     db_cursor.moveToFirst();
        isfirst_cursor = cursor.moveToFirst();
        
        String save1 = NumberQuery(cursor);
        String save2 = Db_Number(db_cursor);
      if(isfirst_cursor){
       while(end > count){
        Log.d(tag, "end = "+end +","+ count);
        while(db_end > db_count){
            
            if( !save1.equals(save2)){
             db_count++;
             
             Log.d(tag, "end = "+save1 +","+ save2+db_count);
             if(db_end > db_count){
              
              db_cursor.moveToNext();
             }
             save2 = Db_Number(db_cursor);
             
             if(db_end == db_count){
              Log.d(tag, "end = "+db_end +","+db_count );
              // 컬럼명으로 컬럼 인덱스 찾기 
                 int idIndex = cursor.getColumnIndex("_id");
                 
                 // 요소값 얻기
                 int id = cursor.getInt(idIndex);   
                 name[count] = cursor.getString(1);
                   
                   
                 // LogCat에 로그 남기기
                 Log.d(tag, "id=" + id +", name["+count+"]=" + name[count]);
                 count++;
                 
                 db_count = 0;
                 db_cursor.moveToFirst();
                 save2 = Db_Number(db_cursor);
                 
                 if(end > count){
                  cursor.moveToNext();
                 }
                 save1 = NumberQuery(cursor);
                 
             }
            }
            else{
             Log.d(tag,"id=" + save1);
             db_cursor.moveToFirst();
             save2 = Db_Number(db_cursor);
             
             
             count++;
             if(end > count){
              db_count = 0;
              cursor.moveToNext();
              save1 = NumberQuery(cursor);
             }
             else{
              db_count = db_end;
C:\Android\workspace\SosAndroid\src\com\sos\android\CallContacts
             }
            }
           }// second while end
        
       }
           
      }
  
  final ListView listView = getListView();
  
  
  
  listView.setItemsCanFocus(false);
  
  setListAdapter(
    new ArrayAdapter<String>(this, R.layout.callcontacts, android.R.id.text1, name));
  listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);  
  
  listView.setOnItemClickListener(new OnItemClickListener(){
C:\Android\workspace\SosAndroid\src\com\sos\android\CallContacts
   //리스트에서 항목이 하나 선택된다면
   public void onItemClick(AdapterView<?> parent, View view, int pos,
     long id) {
    // TODO Auto-generated method stub 
    Log.d(tag, "id=");
    //커서를 선택한 항목으로 이동시킵니다
    cursor.moveToPosition(pos);
    Log.d(tag, "id=");
    NumberQuery(cursor);
    
    Contacts_DB.insertContacts(contact_name, contact_number);
    
    // URL를 얻어옵니.
    //Uri outURI = Uri.parse(people.toString() + rowId);
    
    //선택한 항목에 대한 경로를 지정해서 액티비티에게 리턴합니다.
    //Intent outData = new Intent();
    //outData.setData(outURI);
    //setResult(Activity.RESULT_OK, outData);
    //finish();
   }
  });
 }
 
 private Cursor getURI() 
 {
  // 주소록 URI -> android 2.x 이상버젼에서의 URI 접근방법
  Uri people = ContactsContract.Contacts.CONTENT_URI;
C:\Android\workspace\SosAndroid\src\com\sos\android\CallContacts
  
  // 검색할 컬럼 정하기
  String[] projection = new String[] { ContactsContract.Contacts._ID,
    ContactsContract.Contacts.DISPLAY_NAME,
    ContactsContract.Contacts.HAS_PHONE_NUMBER };
  
  // 쿼리 날려서 커서 얻기
  String[] selectionArgs = null;
  String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 
C:\Android\workspace\SosAndroid\src\com\sos\android\CallContacts
  return managedQuery(people, projection, null, selectionArgs, sortOrder);
 }
 
 public String NumberQuery(Cursor cursor){
  //_id를 얻어옵니다.
  rowId = cursor.getColumnIndex(ContactsContract.Contacts._ID);
  
  contact_name = cursor.getString(1);
  
  ContactId = cursor.getString(rowId);
  
  phones = getContentResolver().query(
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
    null,
    ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+ContactId,
    null,
    null);
  
  //선택한 곳의 값은 "-1"의 값이기에 한칸 커서를 옮깁니다.
  phones.moveToNext();
  
  //전화번호를 얻어옵니다.
  contact_number = phones
  .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
  return contact_number;
 }
 
 public String Db_Number(Cursor Db_cursor){
  String contact_number = null;
  contact_number = Db_cursor.getString(0); 
  return contact_number;
 }
 
}