Question

I am having problem with this contact retrieving code. The function getContact() is retuning null.

private PIM pim;
private ContactList clist;

public ContactExtract(){
    pim=PIM.getInstance();
    try{
    clist=(ContactList) pim.openPIMList(PIM.CONTACT_LIST,PIM.READ_ONLY);
    }catch(Exception e){}
}

public Vector getContact(){
    //ContactDetail cd[]= new ContactDetail[200];
    Vector v=new Vector();
    try{
        Enumeration en=clist.items();
        //String num=null;
        //String temp[]=new String[2];
        //int i=0;
        while(en.hasMoreElements()){
            Contact c=(Contact)en.nextElement();
            v.addElement(c);
            //temp=c.getStringArray(Contact.NAME, i);
            //num=c.getString(Contact.TEL, i);
            //cd[i]=new ContactDetail(temp[0],temp[1],num);
        }
        clist.close();
    }catch(Exception e){}
    return v;
Was it helpful?

Solution

Most likely reason for NPE you are getting is is that clist value is null in the getContact method. Most likely reason for this is, in turn, some exception that happens in ContactExtract() constructor.

But one would never know that for sure as long as you swallow exceptions. If you're interested, search the web for something like java swallow exceptions to learn in more details why this is bad.

Meanwhile, the most straightforward way to find out what happened is to add appropriate logging everywhere in your code, first of all in the catch blocks. Make sure there are no statements like catch(Exception e){} and your reward will be much easier understanding on what went wrong.

In constructor, replace empty catch block with something like:

catch(Exception e){
    Sustem.out.println("exception in openPIMList: [" + e + "]");
}

In getContat method, do about the same, only with appropriate log message:

catch(Exception e){
    Sustem.out.println("exception in getContact: [" + e + "]");
}

Then, re-run the code in emulator and look into its console to find out what went wrong.

Another thing worth adding in the code is checking, logging and handling for possible null values. In getContact() method, clist can be null and cause you all the kind of trouble but you don't even try to check and handle that.

OTHER TIPS

Always try to print Exception e.

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

You'll come to know what's wrong in the code.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top