2013-12-20 3 views
1

У меня есть приложение, и я пытаюсь сохранить имя пользователя и пароль при входе пользователя в систему. Когда пользователь запускает приложение, он должен прочитать имя пользователя, пароль и логин. Проблема в том, что он всегда дважды читает пароль - один раз для пароля (который является правильным) и один раз для имени пользователя. Поэтому он пытается войти с использованием пароля в качестве имени пользователя и пароля.SharedPreferences читайте то же значение

Reading:

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] 
+1

Вы уверены, что '' de_letorat_TicTacToe_PREF_NAME' и de_letorat_TicTacToe_PREF_PASSWORD' имеют разные значения. Попробуйте выполнить регистрацию этих –

ответ

1

Проверьте preferences.xml или ваш strings.xml дубликатов ключей.

Кажется, что вашими предпочтениями являются «пароль».

0

Каждая строка ключ должен быть инициализирован с отчетливым значением

String pref_name_key = "someName"; 
String pref_pswrd_key = "somePasword"; 
editor = sharedPrefs.edit(); 
editor.putString(pref_name_key, name); 
editor.putString(pref_pswrd_key, pswrd); 
editor.apply(); 
Смежные вопросы