주소록을 불러와 삭제 하는 기능 구현중 입니다.

 

package z.Contact;

import java.util.ArrayList;

import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class delete extends Activity {
 ListView listPerson;
 ArrayList<String> persons;
 ArrayAdapter<String> adp;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.delete);

        listPerson = (ListView)findViewById(R.id.listPerson);
        getList();
        listPerson.setOnItemClickListener(mItemClickListener);
   
    }
    public void getList(){
     Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
     
     String[] projection = new String[]{
       ContactsContract.CommonDataKinds.Phone.NUMBER,
       ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
       };
     String[] selectionArgs = null;
     
     Cursor contactCursor = managedQuery(uri, projection, null, selectionArgs, null);
     
   
     ArrayList<String> persons = new ArrayList<String>();
     if(contactCursor.moveToFirst()){
      do{
       persons.add(contactCursor.getString(1)+ "/" +contactCursor.getString(0));
      }while(contactCursor.moveToNext());
      }
     
     ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, persons);
     listPerson.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
     listPerson.setAdapter(adp); 
     }
   
    public void mOnClick(View v) {
  // TODO Auto-generated method stub
 switch(v.getId()){
 case R.id.delete:
  Log.d("TAG","clicked");
  SparseBooleanArray sb = listPerson.getCheckedItemPositions();
  if(sb.size() !=0){
   for(int i = listPerson.getCount() -1; i>=0; i--){
    if(sb.get(i)){
 

           persons.remove(i);  // 문제 발생 부분
           adp.notifyDataSetChanged();
          }
         }
         listPerson.clearChoices() 
   
  }
  break;
 
 }
}

 

 

 

 

08-31 09:39:58.933: ERROR/AndroidRuntime(1418): FATAL EXCEPTION: main
08-31 09:39:58.933: ERROR/AndroidRuntime(1418): java.lang.IllegalStateException: Could not execute method of the activity
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at android.view.View$1.onClick(View.java:2154)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at android.view.View.performClick(View.java:2538)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at android.view.View$PerformClick.run(View.java:9152)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at android.os.Handler.handleCallback(Handler.java:587)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at android.os.Looper.loop(Looper.java:130)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at android.app.ActivityThread.main(ActivityThread.java:3687)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at java.lang.reflect.Method.invokeNative(Native Method)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at java.lang.reflect.Method.invoke(Method.java:507)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at dalvik.system.NativeStart.main(Native Method)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418): Caused by: java.lang.reflect.InvocationTargetException
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at java.lang.reflect.Method.invokeNative(Native Method)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at java.lang.reflect.Method.invoke(Method.java:507)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at android.view.View$1.onClick(View.java:2149)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     ... 11 more
08-31 09:39:58.933: ERROR/AndroidRuntime(1418): Caused by: java.lang.NullPointerException
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     at z.Contact.delete.mOnClick(delete.java:76)
08-31 09:39:58.933: ERROR/AndroidRuntime(1418):     ... 14 more
08-31 09:39:58.941: ERROR/(148): Dumpstate > /data/log/dumpstate_app_error
08-31 09:39:58.941: ERROR/DropBoxManagerService(148): disable reading and writing to dropbox

  persons.remove(i); 이부분에서 exception 발생하는것 같은데 초보라 파악을 잘 못하겠습니다.

도움좀 주십시요