2013-05-15 2 views
0

내가 개발하고있는 LiveWallpaper 앱에 문제가 있습니다. 두 클래스를 고려하십시오 : LiveWallpaperServiceLiveWallpaperSettings. LiveWallpaperSettingsPreferencyActivity입니다. 예 : boolean displaySprite (true => 화면에 스프라이트 표시, false 표시 안 함)은 을 나타내며 사용자가 선택한 환경 설정을 나타내는 데이터 예제는 SharedPreferences을 통해 LiveWallpaperSettings에 저장/지속됩니다.SharedPreferences에 액세스하기

응용 프로그램 (설정 -> 디스플레이 -> 라이브 벽지 -> MyLiveWallpaper)을 시작하면 저장된 기본 설정을 알아야 스프라이트를 표시 할 수 있습니다. 그러나 LiveWallpaperSettings은 설정 버튼을 클릭 할 때까지 인스턴스화되지 않으므로 SharedPreferences을 사용할 수 없으며 그때까지는 저장된 설정을 사용할 수 없습니다.

나는 LiveWallpaperService.onCreateScene()이 시도하지만, 그 안에 데이터가 없습니다 :
SharedPreferences startupPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

내가 무엇을 할 수 있습니까?

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); 
boolean display = settings.getBoolean("display", true); 

"공공 추상 부울 getBoolean (문자열 키, 부울 defValue)"

추가 된 API 레벨을 1 검색 : 입/sharedpref 파일이 존재하지 않는 경우

+0

당신이 몇 가지 코드를 게시 할 수 있습니다를 추가 오해 didnt한다! – lelloman

답변

1

기본값이 있습니다 환경 설정의 boolean 치

매개 변수 key 검색 할 기본 설정의 이름입니다. defValue이 기본 설정이없는 경우 반환 할 값입니다.

희망 나는 당신의 질문 : 환경 설정에서

+0

답장을 보내 주셔서 감사합니다.하지만 오해 하셨다고 생각합니다. 저장된 값이 있기 때문에 기본값에 관심이 없습니다. 앱이 시작될 때 액세스 할 수 없습니다. –

+0

sharedpref 파일이 data/appname/shared_prefs 폴더에 있는지 확인 했습니까? – Oli

0

이 (기본값을 설정하고 MainActivity에서 onCreate에 XML) 다음 코드 setDefaultValues(this, R.xml.yourxmlname, false);

+0

답장을 보내 주셔서 감사합니다. 나는 기본값을 원하지 않는다. 나는 명확하지 않은 것에 대해 사과드립니다. 이 시나리오에서 사용자는 이전에'displaySprite'에 대한 값을 설정했고이 값을 검색하려고합니다. –

+0

설정 값은 기본 공유 환경 설정에 저장됩니다. Oli 응답을 사용하여 값을 가져옵니다. 이름에도 불구하고 사용자가 설정에서 설정 한 값을 제공합니다. –

+0

나는 너와 (그리고 올리)가 맞다고 생각한다. 고맙습니다. –

관련 문제