2010-03-16 10 views
0

제 문제는 다음과 같습니다. DialogPreference를 확장하는 구성 요소가 있습니다. UI 외부에서 관련 환경 설정을 변경하면 ...DialogPreference에 환경 설정이 저장되지 않았습니다.

... 그러면 대화 상자를 열 때 선택한 환경 설정이 변경되지 않았습니다. 공유 기본 설정 값이 수정 되더라도 이전에 설정된 값이 계속 포함됩니다.

누군가이 문제를 일으킬 수있는 아이디어가 있습니까?

이 아마 그러나 다만 경우에, 오래 전에 해결되었습니다
+0

어떻게 당신이 그것을 읽고있다? 이 같은 – Macarse

+0

: int 값 = sharedPref.getInt ("settingKey", -1) –

+0

당신이 "설정"에서 저장하고 "settingKey"에서지고 있기 때문이다. 저장 및 검색 할 때 동일한 키를 사용해야합니다. – MobileMon

답변

0

....

문제의 원인이 될 수있는 것들에 대한 몇 가지 아이디어 :

  • '된 SharedPreferences'당신이 작성하는 당신 의 값은 읽는 것과 같지 않을 수 있습니다. 대화 상자에서 commit()을 호출 한 직후에 SharedPreferences에서 값을 가져 와서 (On Log 또는 Toast를 통해) 값을 인쇄하여 테스트 할 수 있습니다. 수정 된 변수가 표시되면 실제로 통화 활동에서 사용하는 대화 상자 대신 'SharedPreferences'를 새로 열 수 있습니다. 또는

  • 대화 상자에서 기본값을 다시 다시 작성할 수 있습니다. 예를 들어 IF onResume() 또는 다른 함수가 대화 상자를 닫은 직후에 호출되고 있고 기본값이 거기에 기록되어있는 경우입니다. 나는 이것이있을 법하지 않다고 생각하지만, 당신이 올바른 'SharedPreferences'에 글을 쓰고 있다고 확신한다면, 고려해야 할 다른 무엇인가있을 것입니다.

  • 변수를 쓸 때 사용하고있는 함수가 잘못되었을 수 있습니다.이 문제는 컴파일러가 감지하지 못하거나 실패하지 않는 방법은 분명하지 않지만 SharedPreferences .Editor, 정수 값을 쓰는 함수는 putInteger (String key, int value) 대신 putInt (String key, int value)가 될 수 있습니다.

  • 당신은 읽거나 잘못된 변수를 작성할 수 있습니다 .... 당신이 경우에 일어날 수있는 putInt 명령을 복사하여 붙여 잘못된 키 또는 잘못된 값을 떠났다. 이것은 오랜 시간 동안 발견되지 않는 종류의 실수이지만, 그것이 일어난 것 같아요. 비슷한 효과를 가진 실수는 키에 오타가있을 것입니다 (읽기와 쓰기를위한 두 개의 다른 키). 내가 훨씬 더 내가 제안 할 수 없다 생각합니다 실제 코드없이

    ... 그러나 나는이 어떻게 든이 질문에가는 사람에게 도움이 될 수 있기를 바랍니다.

    감사합니다.

관련 문제