Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中创建SharedReference的SingletonClass_Android - Fatal编程技术网

如何在android中创建SharedReference的SingletonClass

如何在android中创建SharedReference的SingletonClass,android,Android,我有一个活动,其中我存储了所有关于用户注册的详细信息,我想要的是创建一个类Singleton并保存用户的手机和密码,在活动中,我使用这些存储的数据,而不是每次创建一个新对象。我该怎么做 这是我存储用户数据的注册模型: public class CRegistrationSessionManagement { ; // User name (make variable public to access from outside) public static final String s_szKEY

我有一个活动,其中我存储了所有关于用户注册的详细信息,我想要的是创建一个类Singleton并保存用户的手机和密码,在活动中,我使用这些存储的数据,而不是每次创建一个新对象。我该怎么做

这是我存储用户数据的注册模型:

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);
}
公共类注册会话管理{
;
//用户名(将变量公开以便从外部访问)
公共静态最终字符串s_szKEY_MOBILENUMBER=“mobileNumebr”;
公共静态最终字符串s_szKEY_PASSWORD=“pin”;
公共静态最终字符串s_szKEY_EMAILID=“EMAILID”;
//Sharedpref文件名
公共静态最终字符串s_szREGIS_FILE_NAME=“RegistrationData”;
//所有共享首选项密钥
私有静态最终字符串s_szIS_registed=“IsRegistered”;
公共静态字符串移动;
公共股份参考优先;
//共享首选项编辑器
公共共享参考。编辑m_编辑;
//上下文
公共语境;
公共注册会话管理(上下文m_上下文){
this.m_Context=m_Context;
m_Regis_Pref=m_Context.getSharedReferences(s_szREGIS_文件名,Context.MODE_PRIVATE);
m_editor=m_Regis_Pref.edit();
}
//注册会话管理。
public void setRegisteredData(字符串mobile、字符串pin、字符串emailId){
putBoolean(s_szIS_注册,true);
putString(s_szKEY_MOBILENUMBER,mobile);
putString(s_szKEY_密码,pin);
putString(s_szKEY_EMAILID,EMAILID);
m_editor.commit();
}
/**
*CheckRegistration()会话将检查用户注册状态
*如果为false,则将用户重定向到注册页面
*否则我什么也做不了
*/
公共布尔检查注册(){
如果(!isRegistered()){
意图i=新意图(m_上下文,CMainActivity.class);
i、 设置标志(意图、标志、活动、新任务);
m_背景。星触觉(i);
返回true;
}
返回false;
}
/**
*获取存储的注册会话数据
*/
公共HashMap getRegistrationDetails(){
HashMap用户=新建HashMap();
//用户名
put(s_szKEY_MOBILENUMBER,m_Regis_Pref.getString(s_szKEY_MOBILENUMBER,null));
//用户电子邮件id
put(s_szKEY_密码,m_Regis_Pref.getString(s_szKEY_密码,null));
put(s_szKEY_EMAILID,m_Regis_Pref.getString(s_szKEY_EMAILID,null));
//返回用户
返回用户;
}
公共布尔值已注册(){
返回m_Regis_Pref.getBoolean(s_szIS_REGISTERED,false);
}
}


如何在我想要的活动中获取手机和密码…只创建该类的实例…而不是每次创建该类的新对象。

您可以使用静态方法。您可以使用
公共静态HashMap getRegistrationDetails()
而不是
公共HashMap getRegistrationDetails()
。所以当你想使用你的getter时<代码>注册会话管理。getRegistrationDetails()。看看这个例子,了解更多关于静态方法及其用法的信息

您可以在类中使用公共静态方法。所以你可以在不创建对象的情况下访问你的类的方法。使用SharedReferences从android内置的Sington类来存储你想要的详细信息。请给我发送代码snipshot