android - Attempt to invoke virtual method 'void com.example.app.createLoginSession(java.lang.String)' on a null object reference -


this question has answer here:

i trying pass through username (email) createloginsession within sharedpreferencesmanagement class. when try execute on login i'm getting error states "createloginsession(java.lang.string) on null object reference".

public class sessionmanagement { // shared preferences sharedpreferences pref;  // editor shared preferences editor editor;  // context context _context;  // shared pref mode int private_mode = 0;  // sharedpref file name private static final string pref_name = "androidhivepref";  // shared preferences keys private static final string is_login = "isloggedin";   // email address (make variable public access outside) public static final string key_email = "email";  // constructor public sessionmanagement(context context){     this._context = context;     pref = _context.getsharedpreferences(pref_name, private_mode);     editor = pref.edit(); }  /**  * create login session  * */ public void createloginsession(string email){     // storing login value true     editor.putboolean(is_login, true);      // storing email in pref     editor.putstring(key_email, email);      // commit changes     editor.commit(); }  /**  * check login method wil check user login status  * if false redirect user login page  * else won't  * */ public void checklogin(){     // check login status     if(!this.isloggedin()){         // user not logged in redirect him login activity         intent = new intent(_context, activitylogin.class);         // closing activities         i.addflags(intent.flag_activity_clear_top);          // add new flag start new activity         i.setflags(intent.flag_activity_new_task);          // staring login activity         _context.startactivity(i);     }  }    /**  * stored session data  * */ public hashmap<string, string> getuserdetails(){     hashmap<string, string> user = new hashmap<string, string>();      // user email id     user.put(key_email, pref.getstring(key_email, null));      // return user     return user; }  /**  * clear session details  * */ public void logoutuser(){     // clearing data shared preferences     editor.clear();     editor.commit();      // after logout redirect user loing activity     intent = new intent(_context, activitylogin.class);     // closing activities     i.addflags(intent.flag_activity_clear_top);      // add new flag start new activity     i.setflags(intent.flag_activity_new_task);      // staring login activity     _context.startactivity(i); }  /**  * quick check login  * **/ // login state public boolean isloggedin(){     return pref.getboolean(is_login, false); } 

the code activity login follows:

package com.example.myapplication;  import android.content.intent; import android.os.bundle; import android.support.design.widget.snackbar; import android.support.design.widget.textinputedittext; import android.support.design.widget.textinputlayout; import android.support.v4.widget.nestedscrollview; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.appcompatbutton; import android.support.v7.widget.appcompattextview; import android.util.log; import android.view.view;  import com.example.myapplication.r; import com.example.myapplication.inputvalidation; import com.example.myapplication.databasehelper;  public class activitylogin extends appcompatactivity implements  view.onclicklistener { private final appcompatactivity activity = activitylogin.this;  private nestedscrollview nestedscrollview;  private textinputlayout textinputlayoutemail; private textinputlayout textinputlayoutpassword;  private textinputedittext textinputedittextemail; private textinputedittext textinputedittextpassword;  private appcompatbutton appcompatbuttonlogin;  private appcompattextview textviewlinkregister;  private inputvalidation inputvalidation; private databasehelper databasehelper;  public string email;  //session manager class sessionmanagement session;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_login);     getsupportactionbar().hide();      initviews();     initlisteners();     initobjects(); }  /**  * method initialize views  */ private void initviews() {      nestedscrollview = (nestedscrollview) findviewbyid(r.id.nestedscrollview);      textinputlayoutemail = (textinputlayout)  findviewbyid(r.id.textinputlayoutemail);     textinputlayoutpassword = (textinputlayout)  findviewbyid(r.id.textinputlayoutpassword);      textinputedittextemail = (textinputedittext)  findviewbyid(r.id.textinputedittextemail);     textinputedittextpassword = (textinputedittext)  findviewbyid(r.id.textinputedittextpassword);      appcompatbuttonlogin = (appcompatbutton)  findviewbyid(r.id.appcompatbuttonlogin);      textviewlinkregister = (appcompattextview)  findviewbyid(r.id.textviewlinkregister);     ;  }  /**  * method initialize listeners  */ private void initlisteners() {     appcompatbuttonlogin.setonclicklistener(this);     textviewlinkregister.setonclicklistener(this); }  /**  * method initialize objects used  */ private void initobjects() {     databasehelper = new databasehelper(activity);     inputvalidation = new inputvalidation(activity);  }  /**  * implemented method listen click on view  *  * @param v  */ @override public void onclick(view v) {     switch (v.getid()) {         case r.id.appcompatbuttonlogin:             verifyfromsqlite();              break;         case r.id.textviewlinkregister:             // navigate registeractivity             intent intentregister = new intent(getapplicationcontext(),  registeractivity.class);             startactivity(intentregister);             break;     } }  /**  * method validate input text fields , verify login  credentials sqlite  */ private void verifyfromsqlite() {     if (!inputvalidation.isinputedittextfilled(textinputedittextemail,  textinputlayoutemail, getstring(r.string.error_message_email))) {         return;     }     if (!inputvalidation.isinputedittextemail(textinputedittextemail,  textinputlayoutemail, getstring(r.string.error_message_email))) {         return;     }     if (!inputvalidation.isinputedittextfilled(textinputedittextpassword,  textinputlayoutpassword, getstring(r.string.error_message_email))) {         return;     }      if  (databasehelper.checkuser(textinputedittextemail.gettext().tostring().trim()             , textinputedittextpassword.gettext().tostring().trim())) {          email = textinputedittextemail.gettext().tostring().trim();         intent accountsintent = new intent(activity, mainmenuactivity.class);         accountsintent.putextra("email",  textinputedittextemail.gettext().tostring().trim());         session.createloginsession(email);         emptyinputedittext();         startactivity(accountsintent);        } else {         // snack bar show success message record wrong         snackbar.make(nestedscrollview,  getstring(r.string.error_valid_email_password), snackbar.length_long).show();     } }  /**  * method empty input edit text  */ private void emptyinputedittext() {     textinputedittextemail.settext(null);     textinputedittextpassword.settext(null); } 

}

the error on line "session.createloginsession("email");" being passed in null value.

a hardcoded string cannot null, problem session variable null @ point, cannot invoque method null object.


Comments

Popular posts from this blog

c# - Update a combobox from a presenter (MVP) -

How to understand 2 main() functions after using uftrace to profile the C++ program? -

How to put a lock and transaction on table using spring 4 or above using jdbcTemplate and annotations like @Transactional? -