我想将用户名和密码存储在全局变量或数据库中
实际上我有一次活动..我试过共享偏好...
所以我这样做了..
public class Login extends Activity {
public static final String PREFS_NAME = "LoginPrefs";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
if (settings.getString("logged", "").toString().equals("logged")) {
Intent intent = new Intent(Login.this, MainActivity.class);
startActivity(intent);
}
Button b = (Button) findViewById(R.id.loginbutton);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EditText username = (EditText) findViewById(R.id.login);
EditText passsword= (EditText) findViewById(R.id.password);
Snipper usertype= (Snipper) findViewById(R.id.ut);
Snipper ctype= (Snipper) findViewById(R.id.ct);
if(username.getText().toString().length() > 0 && password.getText().toString().length() > 0 && usertype.getSelectedItem().toString().length()>0 && ctype.getSelectedItem().toString().length()>0) {
//if(username.getText().toString().equals("admin") && password.getText().toString().equals("admin")) {
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("logged", "logged");
editor.commit();
Intent intent = new Intent(Login.this, MainActivity.class);
startActivity(intent);
//}
}
}
});
}
}
这里连同用户名和密码我保存了总共4个值......
所以我想将它们保存为数据库或全局变量并在多个活动中使用 ...
任何人都可以通过示例说明或更正我的代码...请不要发布书籍或指南行告诉我示例链接或代码......我需要更改...
答案 0 :(得分:2)
您正在存储“登录”键,这有助于您检查用户是否已登录。它一直存在于应用程序中。
通过在sharedPref中存储HashMap,您可以执行相同的操作来存储用户名和密码。
Map<String, String> map = new HashMap<String, String>();
map.put("username", username);
map.put("password", password);
SharedPreferences prefs = context.getSharedPreferences("TEST", 0);
SharedPreferences.Editor editor = prefs.edit();
for (String key : map.keySet()) {
editor.putString(key, map.get(key));
}
editor.apply();
从sharedPref获取价值
SharedPreferences prefs = context.getSharedPreferences("TEST", 0);
HashMap<String, String> map= (HashMap<String, String>) pref.getAll();
for (String key : map.keySet()) {
String value=map.get(key);
}
您的活动:
public class Login extends Activity {
public static final String PREFS_NAME = "LoginPrefs";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
HashMap<String, String> map= (HashMap<String, String>) settings.getAll();
if(map != null && ( map.containsKey("username") && map.containsKey("password")
map.get("username") != null && map.get("password") != null){
Intent intent = new Intent(Login.this, MainActivity.class);
startActivity(intent);
}
/*if (settings.getString("logged", "").toString().equals("logged")) {
Intent intent = new Intent(Login.this, MainActivity.class);
startActivity(intent);
}*/
Button b = (Button) findViewById(R.id.loginbutton);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EditText username = (EditText) findViewById(R.id.login);
EditText passsword= (EditText) findViewById(R.id.password);
Snipper usertype= (Snipper) findViewById(R.id.ut);
Snipper ctype= (Snipper) findViewById(R.id.ct);
if(username.getText().toString().length() > 0 && password.getText().toString().length() > 0 && usertype.getSelectedItem().toString().length()>0 && ctype.getSelectedItem().toString().length()>0) {
//if(username.getText().toString().equals("admin") && password.getText().toString().equals("admin")) {
/*SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("logged", "logged");
editor.commit();*/
String uname = username.getText().toString();
String pass = password.getText().toString();
Map<String, String> map = new HashMap<String, String>();
map.put("username", uname);
map.put("password", pass);
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
for (String key : map.keySet()) {
editor.putString(key, map.get(key));
}
editor.apply();
Intent intent = new Intent(Login.this, MainActivity.class);
startActivity(intent);
//}
}
}
});
}
请阅读SharedPreference教程。在本活动中,我如何提及SharedPreference,使用与使用LoginPrefs键调用它的方式相同。
希望它对你有用。
干杯... !!!
答案 1 :(得分:-1)
您当前的方法是正确的,但您对SharedPreferences
的理解错误。
在我目前的方法中,我想将它用于多项活动
您可以使用来自不同活动的SharedPreferences
来读取和写入数据。