2016-03-29 7 views
-1

Ich habe eine Aktivität, in der ich alle Details in Bezug auf die Registrierung von Benutzer speichern und was ich möchte, ist eine Klasse Singleton und Speichern von Mobiltelefon und Passwort des Benutzers und in Aktivität verwende ich diese gespeichert Daten statt jedes Mal ein neues Objekt zu erstellen. Wie kann ich das machen?Wie man SingletonClass der gemeinsamen Präferenz in android

Hier ist mein RegistrationModel wo ich Benutzerdaten speichern:

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

}

Wie kann ich in der Aktivität Handy und das Passwort zu holen, wo ich ... mag nur von Instanz dieser Klasse zu schaffen. .. statt jedes Mal ein neues Objekt dieser Klasse zu erstellen.

+0

Sie können öffentliche statische Methode in Ihrer Klasse verwenden. Sie können also auf die Methode Ihrer Klasse zugreifen, ohne ein Objekt zu erstellen. – user2043602

+0

I diidnt verstehen – Nitin

+0

Verwenden SharedPreferences eine eingebaute Singeton-Klasse von Android, um Details zu speichern, die Sie möchten. – virendrao

Antwort

0

Sie können statische Methode verwenden. Anstelle von public HashMap<String, String> getRegistrationDetails() können Sie public static HashMap<String, String> getRegistrationDetails() verwenden. Also wenn du deinen Getter benutzen willst. CRegistrationSessionManagement. getRegistrationDetails(). Sehen Sie sich dieses Beispiel an, um mehr über die statische Methode und ihre Verwendung zu erfahren. Java: when to use static methods

Verwandte Themen