我已经为应用程序创建了一个登录名。我知道如果你输入用户名和密码,然后点击它会记住用户名和密码的复选框。但是,如果在单击复选框后进行任何更改,则不会保存它们。我想知道是否有办法解决这个问题,我将如何做到这一点。我在想的是当点击edittext时它会不断保存editext中的内容。基本上,当用户在单击复选框时更改密码或用户名时,会动态保存的内容。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_log_in);
SharedPreferences.Editor editor;
name = (EditText) findViewById(R.id.userName);
password = (EditText) findViewById(R.id.password);
button = (Button) findViewById(R.id.Button01);
error = (TextView) findViewById(R.id.invalid);
error.setVisibility(View.INVISIBLE);
checkbox = (CheckBox) findViewById(R.id.remember);
LoadPreferences();
LoadPreferences1();
}
public void rememberInfo(View view) {
SavePrefernces("MEM1", name.getText().toString());
SavePrefernces("MEM2", password.getText().toString());
}
private void LoadPreferences1() {
SharedPreferences shardPreferences = getPreferences(MODE_PRIVATE);
String strSavedMem2 = shardPreferences.getString("MEM2", "");
password.setText(strSavedMem2);
}
private void LoadPreferences() {
SharedPreferences shardPreferences = getPreferences(MODE_PRIVATE);
String strSavedMem1 = shardPreferences.getString("MEM1", "");
name.setText(strSavedMem1);
}
private void SavePrefernces(String key, String value) {
SharedPreferences shardPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = shardPreferences.edit();
editor.putString(key, value);
editor.commit();
}
答案 0 :(得分:1)
我认为最简单的解决方案是在按下登录(或其他)按钮时保存登录详细信息。因此,当按下按钮时,从EditText
获取值并将它们存储在SharedPreferences
中。
答案 1 :(得分:1)
我相信在选中复选框时,您正在调用Saveprefernces
。相反,一旦你知道你的登录成功,你应该这样做,这样只保存一对有效的用户名:密码