2012-12-28 4 views
-3

J'essaie de choisir le nom d'affichage, le numéro de téléphone mobile des contacts dans le téléphone et de les afficher dans une liste en utilisant une vue de liste. Mais je reçois NullPointerException tout en exécutant le code suivant:Pointeur nul Exception

public class SeeActivity extends ListActivity { 
    public String [] allname; 
     public String [] allnumber; 
     public int listcount=0; 
     public String [] details; 
     String[] PROJECTION = new String[] { 
       ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
       ContactsContract.CommonDataKinds.Phone.NUMBER 




     }; 
     @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


; 

     Cursor phone= getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,PROJECTION ,null ,null ,null); 

     try{ 
     while(phone.moveToNext()) 
     { 

      String name= phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
      String number=phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      allname[listcount]=name; 
      allnumber[listcount]=number; 
      details [listcount]=name+" "+number; 
      listcount=listcount+1; 

     } 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1,details); 
     setListAdapter(adapter); 
     ListView l=getListView(); 
      l.setOnItemClickListener(new OnItemClickListener() { 

      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       Toast.makeText(getApplicationContext(),((TextView)arg1).getText() , Toast.LENGTH_SHORT).show(); 



      } 
     });} 
     catch(Exception e) 
     { 
      Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show(); 
     } 



    } 


} 
+1

Où est la Stacktrace? (dans quelle ligne est le NullPointerException jeté?) – MrSmith42

+0

vous voudrez peut-être lire en premier suivant http://developer.android.com/guide/topics/providers/contacts-provider.html#RawContactBasics – David

Répondre

1

Le problème est que vous avez déclaré des tableaux de chaîne mais vous n'avez pas créé/mémoire allouée pour eux:

public String [] allname; 
public String [] allnumber; 
public int listcount=0; 
public String [] details; 

Donc, quand vous essayez d'y accéder comme:

allname[listcount]=name; 
allnumber[listcount]=number; 
details [listcount]=name+" "+number; 

il donne une exception de pointeur nul. Alors, créez vos tableaux de chaîne tout en les déclarant:

public String[] allname = new String[100]; 
public String[] allnumber = new String[100]; 
public int listcount = 0; 
public String[] details = new String[100]; 

Jetez un oeil à arrays


Et ne pas oublier de fermer votre curseur.

0
public String [] allname; 
    public String [] allnumber; 

pointent vers null; et après les résultats d'affectation NullPointerException.

 allname[listcount]=name; 
     allnumber[listcount]=number; 

Change tableau création déclaration quelque chose comme:

public String[] allname = new String[10]; 
public String[] allnumber = new String[10]; 

Si vous ne connaissez pas la taille à l'avance, je suggère d'utiliser quelque chose comme ArrayList au lieu de tableau.