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(); } }
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.
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With