-1

I have one activity in which I store all the details regarding registration of user and what I want is to make a class Singleton and save mobile and password of user and in activity I use those stored data instead of creating every time a new object. How can I do that?

Here is my RegistrationModel where I store user data:

public class CRegistrationSessionManagement {
;
// User name (make variable public to access from outside)
public static final String s_szKEY_MOBILENUMBER = "mobileNumebr";
public static final String s_szKEY_PASSWORD = "pin";
public static final String s_szKEY_EMAILID = "emailId";
// Sharedpref file name
public static final String s_szREGIS_FILE_NAME = "RegistrationData";

// All Shared Preferences Keys
private static final String s_szIS_REGISTERED = "IsRegistered";
public static String mobile;
public SharedPreferences m_Regis_Pref;
// Editor for Shared preferences
public SharedPreferences.Editor m_editor;
// Context
public Context m_Context;

public CRegistrationSessionManagement(Context m_Context) {
    this.m_Context = m_Context;
    m_Regis_Pref = m_Context.getSharedPreferences(s_szREGIS_FILE_NAME, Context.MODE_PRIVATE);
    m_editor = m_Regis_Pref.edit();
}

// Registration Session Management.
public void setRegisteredData(String mobile, String pin, String emailId) {
    m_editor.putBoolean(s_szIS_REGISTERED, true);
    m_editor.putString(s_szKEY_MOBILENUMBER, mobile);
    m_editor.putString(s_szKEY_PASSWORD, pin);
    m_editor.putString(s_szKEY_EMAILID, emailId);
    m_editor.commit();
}

/**
 * checkRegistrtaion() session wil check user Registrtaion status
 * If false it will redirect user to Registrtaion page
 * Else won't do anything
 */
public boolean checkRegistration() {
    if (!isRegistered()) {
        Intent i = new Intent(m_Context, CMainActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        m_Context.startActivity(i);
        return true;
    }
    return false;
}

/**
 * Get stored Registration session data
 */
public HashMap<String, String> getRegistrationDetails() {
    HashMap<String, String> user = new HashMap<>();
    // user name
    user.put(s_szKEY_MOBILENUMBER, m_Regis_Pref.getString(s_szKEY_MOBILENUMBER, null));
    // user email id
    user.put(s_szKEY_PASSWORD, m_Regis_Pref.getString(s_szKEY_PASSWORD, null));
    user.put(s_szKEY_EMAILID, m_Regis_Pref.getString(s_szKEY_EMAILID, null));
    // return user
    return user;
}

public boolean isRegistered() {
    return m_Regis_Pref.getBoolean(s_szIS_REGISTERED, false);
}

}

How can I fetch mobile and password in activity where I want to ...by only creating instance of this class...instead of creating every time a new object of that class.

Cœur
  • 37,241
  • 25
  • 195
  • 267
Nitin
  • 163
  • 2
  • 11

1 Answers1

0

You can use static method. Instead of public HashMap<String, String> getRegistrationDetails () you can use public static HashMap<String, String> getRegistrationDetails (). So when you want to use your getter. CRegistrationSessionManagement. getRegistrationDetails () . Take a look to this example to know more about static method and their uses. Java: when to use static methods

Community
  • 1
  • 1
user2043602
  • 237
  • 2
  • 4
  • 15