Android非法争论异常

时间:2010-09-29 12:32:09

标签: android

我有以下程序,我在下面得到了例外,

     package com.contacts;

      import java.util.ArrayList;
       import android.app.ListActivity;
     import android.content.ContentResolver;
   import android.content.Intent;
    import android.database.Cursor;
   import android.net.Uri;
    import android.os.Bundle;
    import android.provider.ContactsContract;
    import android.provider.Contacts.People;
    import android.provider.Contacts.People.Phones;
  import android.provider.ContactsContract.PhoneLookup;
   import android.view.View;
 import android.widget.ArrayAdapter;
  import android.widget.ListAdapter;
  import android.widget.ListView;

   public class PickContact extends ListActivity {

  private ListAdapter adapter;
  private Cursor c;
Uri contactUri;
 String contact;
 String number;
     ContentResolver contentResolver;
   @Override
       public void onCreate(Bundle icicle) 
            {
             super.onCreate(icicle);
             setContentView(R.layout.main);

             ArrayList<String> names = new ArrayList<String>();

             Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
             try
             {
             while(people.moveToNext()) {
              int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);
               contact = people.getString(nameFieldColumnIndex);
              int numberFieldColumnIndex = people.getColumnIndex(PhoneLookup.NUMBER);
              number = people.getString(numberFieldColumnIndex);
             }

             people.close();
             }
             catch(Exception e)
             {
                 e.printStackTrace();

             }

           /*  ContentResolver cr = getContentResolver();
             c = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
                     null, null,null);

             while(c.moveToNext()){
                     String id =
              c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
                      String name =
              c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                      String number =
              c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

                      if(number.equals("0")) continue;

                      names.add(name);

              }*/


             names.add(number+""+contact);

              adapter = new ArrayAdapter<String>    (this,
                      android.R.layout.simple_list_item_1, names);
             setListAdapter(adapter);
             getListView().setTextFilterEnabled(true);

      }

}

我收到了以下例外

09-29 17:59:18.672: WARN/System.err(302): java.lang.IllegalStateException: get field slot from row 0 col -1 failed
09-29 17:59:18.721: WARN/System.err(302):     at android.database.CursorWindow.getString_native(Native Method)
09-29 17:59:18.721: WARN/System.err(302):     at android.database.CursorWindow.getString(CursorWindow.java:329)
09-29 17:59:18.731: WARN/System.err(302):     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:49)
09-29 17:59:18.731: WARN/System.err(302):     at android.database.CursorWrapper.getString(CursorWrapper.java:135)
09-29 17:59:18.741: WARN/System.err(302):     at com.contacts.PickContact.onCreate(PickContact.java:42)
09-29 17:59:18.741: WARN/System.err(302):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-29 17:59:18.741: WARN/System.err(302):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-29 17:59:18.764: WARN/System.err(302):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-29 17:59:18.764: WARN/System.err(302):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-29 17:59:18.764: WARN/System.err(302):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-29 17:59:18.771: WARN/System.err(302):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 17:59:18.792: WARN/System.err(302):     at android.os.Looper.loop(Looper.java:123)
09-29 17:59:18.792: WARN/System.err(302):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-29 17:59:18.792: WARN/System.err(302):     at java.lang.reflect.Method.invokeNative(Native Method)
09-29 17:59:18.792: WARN/System.err(302):     at java.lang.reflect.Method.invoke(Method.java:521)
09-29 17:59:18.822: WARN/System.err(302):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-29 17:59:18.822: WARN/System.err(302):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-29 17:59:18.822: WARN/System.err(302):     at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

第0行col -1失败

你真的有一个负列ID吗? 也许PhoneLookup中的字段的起始值为-1,您忘记更改它..