Friday, September 28, 2018

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




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();
}

}

Answer



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

No comments:

Post a Comment

plot explanation - Why did Peaches&#39; mom hang on the tree? - Movies &amp; TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...