我正在尝试从用户获取数据(名称,电子邮件,密码),然后使用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 , ""));
}
}
答案 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将更改同步并直接写入文件。