1
我有一個應用程序,我試圖在用戶登錄時保存用戶名和密碼。當用戶啓動應用程序時,它應該讀取用戶名和密碼並登錄。問題是,它總是讀取密碼兩次 - 一次是密碼(這是正確的),一次是用戶名。所以它會嘗試使用密碼作爲用戶名和密碼登錄。SharedPreferences讀取相同的值
閱讀:
sharedPref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
String userName = sharedPref.getString(getString(
R.string.de_letorat_TicTacToe_PREF_NAME), null);
if(userName != null) {
String password = sharedPref.getString(getString(
R.string.de_letorat_TicTacToe_PREF_PASSWORD), null);
Log.d("TicTacToe", "Read. Username: " + userName + "; Password: " + password);
pw.println("$login" + userName + "/" + password);
pw.flush();
Log.d("TicTacToe", "Sent. Username: " + userName + "; Password: " + password);
}
保存:
Editor edit = sharedPref.edit();
EditText nameField = (EditText) findViewById(R.id.login_fragment_username);
EditText passwordField = (EditText) findViewById(R.id.login_fragment_password);
edit.putString(getString(R.string.de_letorat_TicTacToe_PREF_NAME),
nameField.getText().toString());
edit.putString(getString(R.string.de_letorat_TicTacToe_PREF_PASSWORD),
passwordField.getText().toString());
edit.commit();
Log.d("TicTacToe", "Wrote. Username: " + nameField.getText().toString() +
"; Password: " + passwordField.getText().toString());
的結果是:
Wrote. Username: [username]; Password: [password]
Read. Username: [password]; Password: [password]
Sent. Username: [password]; Password: [password]
初始化你保證'de_letorat_TicTacToe_PREF_NAME'和'de_letorat_TicTacToe_PREF_PASSWORD'有不同的價值觀。嘗試記錄這些 –