2013-12-20 5 views
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] 
+1

로 초기화합니다. 로깅 해보기 –

답변

1

이 preferences.xml로 또는 중복 키에 대한 strings.xml의를 확인하십시오.

기본 설정 키는 모두 "비밀번호"로 보입니다.

0

각 문자열 키 필요 당신은`de_letorat_TicTacToe_PREF_NAME`와`de_letorat_TicTacToe_PREF_PASSWORD`가 다른 값을 가질 것이 확실 별개의 값

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(); 
관련 문제