![](/img/trans.png)
[英]How do I get the SharedPreferences from a PreferenceActivity in Android?
[英]How can I get username and password from SharedPreferences in Android?
我正在尝试恢复用户名和密码以便能够启动 session。这些是 sharedPreferences 的用户。
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="admin">1234</string>
<string name="user">user0987</string>
</map>
这是方法
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences sp1 = MainActivity.this.getSharedPreferences("data", Context.MODE_PRIVATE);
String user = sp1.getString(userInput.getText().toString(), "User not found");
String pass = sp1.getString(passwordInput.getText().toString(), "Password is not correct");
if(user.equals(userInput.getText().toString()){
Toast.makeText(MainActivity.this, "User Exists", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(MainActivity.this, "User not found", Toast.LENGTH_SHORT).show();
}
}
});
这是将数据放入 SharedPreferences 的代码
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String user = userInput.getText().toString();
String pass = passwordInput.getText().toString();
if(user.isEmpty()){
error.show();
} else if (pass.isEmpty()){
error2.show();
} else{
SharedPreferences sp=getSharedPreferences("data", Context.MODE_PRIVATE);
SharedPreferences.Editor Ed=sp.edit();
Ed.putString(user,pass);
Ed.commit();
Toast.makeText(MainActivity.this, "Register completed", Toast.LENGTH_SHORT).show();
}
}
});
您需要在SharedPreferences
编辑器中添加用于保存数据的键。
目前您使用输入的用户名作为密钥,它可以根据编辑文本中输入的数据进行更改,因为用户不会每次都输入相同的用户名,但是为了向/从SharedPreferences
保存和获取数据,我们需要一个特定的密钥。
您可以添加用于保存用户名和密码的密钥,如以下代码:
SharedPreferences sp=getSharedPreferences("data", Context.MODE_PRIVATE);
SharedPreferences.Editor ed=sp.edit();
ed.putString("user",user);
ed.putString("pass",pass);
ed.commit();
用于获取数据
SharedPreferences sp1 = getSharedPreferences("data", Context.MODE_PRIVATE);
String userName = sp1.getString("user", "User not found");
String password = sp1.getString("pass", "Password is not correct");
有关 Sharedpref 的更多信息,请查看使用 SharedPreferences 保存键值数据的官方文档
当您从 SP 检索数据时,请尝试使用下一个代码:
SharedPreferences sp1 = MainActivity.this.getSharedPreferences("data", Context.MODE_PRIVATE);
String pass = sp1.getString(userInput.getText().toString(), null);
if (pass != null) {
Toast.makeText(MainActivity.this, "User Exists", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(MainActivity.this, "User not found", Toast.LENGTH_SHORT).show();
}
您以“用户:密码”的形式保存数据,因此您需要以相同的方式获取它,使用用户名作为密钥。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.