2012-01-17 2 views
3

이상한 문제가 있습니다. 나는 전에 그것을 가졌다. 내 SharedPreference에 int 값을 저장하려고 시도한 다음 다른 Activity에서 복원하려고합니다. 다른 값 (예 : 1)을 저장하더라도 값은 항상 0입니다.INT를 SharedPreferences에 저장할 수없는 이유는 무엇입니까?

SharedPreferences a = FirstActivity.this.getSharedPreferences("a", MODE_PRIVATE); 
SharedPreferences.Editor prefsEditorProfiles = a.edit(); 
prefsEditorProfiles.putInt(Profile, 1); 
prefsEditorProfiles.putInt(Number, 1); 
prefsEditorProfiles.commit(); 

후 다른 활동에 된 SharedPreferences를 복원 : 첫 번째 활동에서 된 SharedPreferences에 (이 경우 "1"에서) 값을 저장

private String Number; 
private String Profile; 

다음

SharedPreferences a = SecondActivity.this.getSharedPreferences("a", MODE_PRIVATE); 
int ab = a.getInt(Number, 0); 

그리고 응용 프로그램이 저를 보여줍니다 0 대신 1. 내 다른 SharedPreferences 잘 작동합니다. 나는 문제가 어디 있는지 모른다.

+0

여러분은 어딘가에''Number''와''Profile'' 키를 인스턴스화한다고 가정하고 그것들은 Activities 사이에서 일치합니까? – harism

답변

4

당신이 선언 한 Number 및 Profile 변수의 값이 무엇인지 확인하고 싶습니다 ... 그 값을 키로 사용하고 있으므로 충돌하는 이름이있는 경우 다른 값으로 설정을 덮어 쓸 수 있습니다. 좋아 보인다.

내가 대체 권하고 싶습니다이 :

개인 문자열 번호;
전용 문자열 프로필;

다음으로 :

개인 최종 문자열 NUMBER = "숫자";
개인 최종 문자열 PROFILE = "프로필";

그런 다음 기본 설정 값을 설정/가져올 때 이러한 상수를 사용하십시오.

+0

예, 맞습니다. 작동하지만 고맙습니다.하지만이 문제가 발생하기 전에 왜 사용했는지 모르겠습니다. 어쩌면 SharedPreferences에 문자열이 하나 밖에 없었을 것입니다. – Adam

0

"숫자"및 "프로필"에 대한 값을 설정 했습니까? 그게 문제가 아니라면 그 문자열은 null입니다.

+0

예, 첫 번째 작업에서 버튼을 누르면 값이 SharedPreferences에 저장되어 있어야합니다 (이 경우 "1")을 첫 번째 활동의 SharedPreferences에 저장합니다. 두 번째 활동 Toast로 표시하면 값이 (int ab = a.getInt (Number, 1);) 값으로 변경되면 값이 항상 0이므로 (int ab = a.getInt (Number, 0);) 항상 1이 될 것입니다. – Adam

+0

제 말은 Number = "Number"를 설정 한 코드 어딘가에 있습니다 - 코드 예제에 나열한 변수는 초기화되지만 설정되지 않습니다. SharedSettings.putInt()를 설정하는 것에 대해 이야기하는 것이 아닙니다. 키 값으로 사용하는 변수에 대해 이야기하고 있습니다. 그들은 설정되어 있습니까? –

0

나는 당신 그러나 같은 putInt를 사용하는 동안 노력했습니다

0

공유 우선 INT를 저장할 때

SharedPreferences prefs = getActivity().getSharedPreferences ("PREFS_KEY", 0); 

사용

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); 

보다는를 사용 해보세요 항상 오류를주십시오. 단지 a.putStringa.putInt를 변경하고 a.getString로를 검색하여

prefsEditorProfiles.putInt(Number, 1); 

나는 올바른 값을 가질 수 있었다.

그래서 putIntgetInt에 문제가있을 것으로 생각됩니다.

어쨌든 응용 프로그램을 계속 진행하는 데 필요한 올바른 값을 사용하십시오.

관련 문제