android - Attempt to invoke virtual method 'void com.example.app.createLoginSession(java.lang.String)' on a null object reference -
this question has answer here:
- what nullpointerexception, , how fix it? 12 answers
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
Post a Comment