Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference [duplicate]

I am getting this error at runtime.

java.lang.RuntimeException: Unable to start activity ComponentInfo java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference

StackTrace:

01-12 03:44:54.270: E/AndroidRuntime(1437): FATAL EXCEPTION: main 01-12 03:44:54.270: E/AndroidRuntime(1437): Process: home.saket, PID: 1437 01-12 03:44:54.270: E/AndroidRuntime(1437): java.lang.RuntimeException: Unable to start activity ComponentInfo{home.saket/home.saket.addmember.Add_Update_User}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference 01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread.access$800(ActivityThread.java:144) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.os.Handler.dispatchMessage(Handler.java:102) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.os.Looper.loop(Looper.java:135) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread.main(ActivityThread.java:5221) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at java.lang.reflect.Method.invoke(Native Method) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at java.lang.reflect.Method.invoke(Method.java:372) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 01-12 03:44:54.270: E/AndroidRuntime(1437): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference 01-12 03:44:54.270: E/AndroidRuntime(1437):     at home.saket.addmember.Add_Update_User.onCreate(Add_Update_User.java:38) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.Activity.performCreate(Activity.java:5933) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 01-12 03:44:54.270: E/AndroidRuntime(1437):     ... 10 more 01-12 03:44:54.272: W/ActivityManager(472):   Force finishing activity home.saket/.addmember.Add_Update_User 01-12 03:44:54.273: E/ActivityManager(472): Invalid thumbnail dimensions: 384x384 

Below I am posted the codes and pointed out the error line.

Add_Update_User.java:

@Override     protected void onCreate(Bundle savedInstanceState) {     // TODO Auto-generated method stub     super.onCreate(savedInstanceState);     setContentView(R.layout.add_update_screen);      // set screen     Set_Add_Update_Screen();      // set visibility of view as per calling activity     String called_from = getIntent().getStringExtra("called");      if (called_from.equalsIgnoreCase("add")) {  --->38th error line         add_view.setVisibility(View.VISIBLE);         update_view.setVisibility(View.GONE);     } else {          update_view.setVisibility(View.VISIBLE);         add_view.setVisibility(View.GONE);         USER_ID = Integer.parseInt(getIntent().getStringExtra("USER_ID"));          Contact c = dbHandler.Get_Contact(USER_ID);            add_name.setText(c.getName());         add_mobile.setText(c.getPhoneNumber());         add_email.setText(c.getEmail());         // dbHandler.close();     }     } 
like image 417
Steve Avatar asked Jan 12 '15 03:01

Steve


People also ask

What is a NullPointerException and how do I fix it?

NullPointerException is thrown when a reference variable is accessed (or de-referenced) and is not pointing to any object. This error can be resolved by using a try-catch block or an if-else condition to check if a reference variable is null before dereferencing it.


2 Answers

called_from must be null. Add a test against that condition like

if (called_from != null && called_from.equalsIgnoreCase("add")) { 

or you could use Yoda conditions (per the Advantages in the linked Wikipedia article it can also solve some types of unsafe null behavior they can be described as placing the constant portion of the expression on the left side of the conditional statement)

if ("add".equalsIgnoreCase(called_from)) { // <-- safe if called_from is null 
like image 70
Elliott Frisch Avatar answered Sep 26 '22 02:09

Elliott Frisch


This is the error line:

if (called_from.equalsIgnoreCase("add")) {  --->38th error line 

This means that called_from is null. Simple check if it is null before using it:

String called_from = getIntent().getStringExtra("called");  if (called_from != null && called_from.equalsIgnoreCase("add")) {     // do whatever } else {     // do whatever } 

That way, if called_from is null, it'll execute the else part of your conditional.

like image 36
Alex K Avatar answered Sep 24 '22 02:09

Alex K