0

I getting java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference when passing class reference to a method. The line causing the error is:

if (!contactData.getContactNo().equals("")){

More of code:

Invocation of method:

recContDBHelper.insertRecord(new ContactData("", number, date)); <--Exception here

Invoked method:

 public void insertRecord(ContactData contactData) {
        String name = "";
        if (!contactData.getContactNo().equals("")) { <--exception here
            name = CommonServices.getContactDisplayNameByNumber(contactData.getContactNo(), context);
            if (name.equalsIgnoreCase("")) {
                name = contactData.getContactNo();
            }
        }
    }

In the above code contactData.getContactNo() return type is String.

Exception is:

04-12 18:21:40.153: E/AndroidRuntime(27924): FATAL EXCEPTION: main
04-12 18:21:40.153: E/AndroidRuntime(27924): Process: com.stackoverflow.ranjith.androidprojdel, PID: 27924
04-12 18:21:40.153: E/AndroidRuntime(27924): java.lang.RuntimeException: Unable to start receiver com.stackoverflow.ranjith.androidprojdel.PhoneCallreceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
04-12 18:21:40.153: E/AndroidRuntime(27924):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2586)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at android.app.ActivityThread.access$1700(ActivityThread.java:144)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at android.os.Handler.dispatchMessage(Handler.java:102)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at android.os.Looper.loop(Looper.java:135)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at android.app.ActivityThread.main(ActivityThread.java:5221)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at java.lang.reflect.Method.invoke(Native Method)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at java.lang.reflect.Method.invoke(Method.java:372)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
04-12 18:21:40.153: E/AndroidRuntime(27924): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
04-12 18:21:40.153: E/AndroidRuntime(27924):    at com.stackoverflow.ranjith.androidprojdel.recentlyContacted.RecContDBHelper.insertRecord(RecContDBHelper.java:57)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at com.stackoverflow.ranjith.androidprojdel.PhoneCallreceiver.onReceive(PhoneCallreceiver.java:93)
04-12 18:21:40.153: E/AndroidRuntime(27924):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2579)
04-12 18:21:40.153: E/AndroidRuntime(27924):    ... 9 more

The ContactData class:

public class ContactData {
    private String contact_name;
    private String ph_no;
    private String time_call;

    public ContactData(String contact_name, String ph_no, String time_call) {
        this.contact_name = contact_name;
        this.ph_no = ph_no;
        this.time_call = time_call;
    }

    public ContactData(String contact_name, String ph_no) {
        this.contact_name = contact_name;
        this.ph_no = ph_no;
    }

    public String getContactNo() {
        return this.ph_no;
    }
}

2 Answers 2

3

try this

if (contactData.getContactNo() != null && !contactDate.getContactNo().isEmpty()) {
    // your code here
}

It seems that contactData.getContactNo() is returning null.

Sign up to request clarification or add additional context in comments.

7 Comments

How can it be null.. I am passing new ContactData("", number, date) to the method.
Yes ... but what does the call return? Is it returning the value of a variable that hasn't been initialized? What does the code say?
at least two possibilities: 1. number is null when create the object. 2 your getter returns null
@Ranjith you are getting null from your getter. You should elaborate more on ContactData class
@Froyo Added the ContactData class
|
0

Don't try to invoke methods on instance without making sure that it is not null. In your case contactData.getContactNo is null and when you are trying to invoke equals method on it NPE is thrown. There are two ways of avoiding it. First one is to compare the empty string with contactData.getContactNo else make sure that contactData and contact.getContactNo is not null.

Eg:

"".equals(contactData.getContactNo)

or

if(contactData != null && contactData.getContactNo != null)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.