1

나는 사용자의 사용자 이름과 암호를 저장하기 위해 SharedPreference를 사용하여 코드를 작성하고 있지만 정보를 입력 할 때마다 XML 파일의 이전 항목이 새로운 항목으로 대체됩니다. 데이터?활동 중 SharedPreference를 사용하는 방법

SharedPreferences sp1=getSharedPreferences("myshared", 0); 
sp1.edit().putString("name", name.getText().toString()).commit(); 
sp1.edit().putString("pass", pass.getText().toString()).commit(); 
sp1.edit().putString("age",age.getText().toString()).commit(); 
sp1.edit().putString("id",id.getText().toString()).commit(); 
+0

물론 덮어 씁니다 - 덮어 쓰는 중입니다! 무엇을 성취하려고합니까? – Simon

+0

검토 : http://stackoverflow.com/questions/16133636/why-my-sharedpreference-create-another-file-name-data-preferences/16144802#16144802 – user1621629

+0

또한 성능 향상을 위해 '편집 ()'와'commit()'을 한 번 ('SharedPreferences.Editor' 변수를 생성합니다). – minipif

답변

0

활동간에 공유 환경 설정을 덮어 쓰는 것처럼 들립니다. SharedPreferences는 디스크의 파일처럼 지속적이므로 설정되지 않은 값에 문제가 없어야합니다. 따라서 으로 덮어 써야합니다.

당신은 당신의 SharedPreferences들은이 경우 디폴트 값 (nonamenopass 동일 경우 이름/패스를 확인하여 설정된 경우 쉽게 null이 될 수 있지만 당신은 확인할 수 있습니다

SharedPreferences sp1=getSharedPreferences("myshared", 0); 
String name = sp1.getString("name", "noname"); 
String pass = sp1.getString("pass", "nopass"); 
... 

을 수행하여 얻을 수 있습니다).

+1

내 XML 파일이 항상 내 데이터를 덮어 쓸 것이라고 알려주는 것 같습니다. – Tolen

+0

아니요, XML 파일이 데이터를 덮어 쓰지 않고 실제로 코드의 어딘가에 덮어 쓰게됩니다. 예를 들어 처음에 액티비티를 덮어 쓰게 될 액티비티의'onResume'에서'sp1.edit(). putString ("name", name.getText() .toString()). commit(); 기본값. 이 문제를 쉽게 해결할 수있는 방법은'sp1.edit(). putString [...] '을 호출하기 전에 이름/패스가 * 설정되어 있는지 확인하고 기본값이 아닌 경우 그것을 덮어 쓰지 마십시오. – Dororo

+1

Simon : XML 데이터에있는 모든 데이터를 등록 시스템처럼 덮어 쓰지 않으려 고합니다. – Tolen

관련 문제