Я думаю, вы путаете переменные для получения значения пароля пользователя и переменные, которые определяют значения имени пользователя / пароля в настройках. Я думаю , что вы намереваетесь это:
public String PREFS_USER;
public String PREFS__PASS;
будет идентификатором для вашего сохраненного имени пользователя и пароля, однако вы затем установите их равными значениям , которые вы извлекли из соответствующего EditTexts
. Я переписал код для вас:
public static final String PREFS_NAME = "MyPrefsFile";
public static final String PREFS_USER = "prefsUsername";
public static final String PREFS__PASS = "prefsPassword";
...
pref = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
username = pref.getString(PREFS_USER, "");
upass = pref.getString(PREFS__PASS, "");
...
public void onCheckedChanged(CompoundButton cb1, boolean bln) {
username = d_ID.getText().toString();//get user name from EditText
upass = password.getText().toString();//get user Password from EditText
getSharedPreferences(PREFS_NAME, MODE_PRIVATE).edit().putString(PREFS_USER, username).putString(PREFS__PASS, upass).commit();
}
Лично я бы так не поступил. Я бы проверил значение флажка, когда пользователь отправил форму, и сохранил только имя пользователя и пароль в этой точке. Что если пользователь снимает флажок, а затем проверяет флажок до того, как введет свой пароль? Вы сохраните пустые значения и будете раздражать своих пользователей.