使用SharedPreferences检索数据

时间:2018-11-20 18:10:55

标签: android sharedpreferences

我正在尝试从用户获取数据(名称,电子邮件,密码),然后使用SharedPreferences保存它们。在第二个活动中,我想检索数据(仅电子邮件和密码),然后在editText中进行设置。这是我的代码。我的数据没有显示,我也不知道问题出在哪里。

我的代码:-

首次活动

EditText username  , userpassword , useremail ;

SharedPreferences sharedPreferences ;


static final String Email = "Email";
static final String Username = "Username";
static final String Password = "Password";

  public void RegisterrButton(View view){

    username = findViewById(R.id.username_editText);
    userpassword = findViewById(R.id.pasword_editText);
    useremail = findViewById(R.id.email_editText);

    String name = username.getText().toString();
    String password = userpassword.getText().toString();
    String email  = useremail.getText().toString();

    SharedPreferences.Editor editor = sharedPreferences.edit();

    editor.putString(Username , name);
    editor.putString(Password , password);
    editor.putString(Email,email);
    editor.commit();


    Intent intent = new Intent(signup.this,MainActivity.class);
    startActivity(intent);


}

第二活动

SharedPreferences sharedPreferences;

static final String prefrence = "prefrence";

static final String Email = "Email";
static final String Password = "Password";

EditText useremail  , userpassword ;

 public void EnterButton(View view){

        useremail = findViewById(R.id.useremail_editText);
        userpassword = findViewById(R.id.pasword_editText);


        sharedPreferences = getSharedPreferences(prefrence , Context.MODE_PRIVATE) ;

        if(sharedPreferences.contains(Email) ){

            useremail.setText(sharedPreferences.getString(Email , ""));}


        if(sharedPreferences.contains(Password)){

            userpassword.setText(sharedPreferences.getString(Password , ""));

        }

 } 

4 个答案:

答案 0 :(得分:0)

在保存和读取值时,请确保您使用的共享首选项名称相同。

    SharedPreferences preference = context.getSharedPreferences(<SAME_PREFERENCE_NAME>,Context.MODE_PRIVATE);

答案 1 :(得分:0)

在MainActivity中替换以下代码:

SharedPreferences.Editor editor = sharedPreferences.edit();

使用

public static final String MY_PREFS_NAME = "prefrence";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();

使用相同的MY_PREFS_NAME变量在您的第二个活动中获取信息:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 

答案 2 :(得分:0)

创建您的函数并尝试以下操作:

   public void saveText(String key, String value) {
        SharedPreferences sPref = context.getSharedPreferences(config.PREFERENCES, context.MODE_PRIVATE);
        SharedPreferences.Editor ed = sPref.edit();
        ed.putString(key, value);
        ed.commit();
        ed.apply();
        toast("Yatda saklandy");
    }

    public String loadText(String key) {
        SharedPreferences sPref = context.getSharedPreferences(config.PREFERENCES, context.MODE_PRIVATE);
        String savedText = sPref.getString(key, "");
        return savedText;
    }

并使用它:

saveText("name",username.getText().toString());

loadText("name");

答案 3 :(得分:0)

在您的第一次活动中,您没有初始化 sharedPreference 要进行初始化

sharedPreferences = getSharedPreferences(prefrence , Context.MODE_PRIVATE);

考虑使用apply()。

它立即将更改写入RAM,然后等待,然后将其写入内部存储器(实际首选项文件)。 Commit将更改同步并直接写入文件。