2017-10-18 6 views
1

공유 환경 설정에서 부울 값을로드하려고합니다. 첫 번째 실행시에는 공유 환경 설정에 저장 한 적이 없어서 TRUE 여야합니다. 그러나, 나는 어떻게 든 잘못되고있다.공유 환경 설정이 올바르게 가져 오기되지 않습니다.

아래 코드를 참조하십시오.

settings = context.getSharedPreferences(SAVED_PREFERENCES, 0); 
isFirstLaunch = settings.getBoolean(FIRST_LAUNCH, true); 
Log.d(TAG, "loadIsFirstLaunch: " + isFirstLaunch); 

p.s. 100 % 전에 공유 환경 설정에서 FIRST_LAUNCH 값을 저장하지 않았습니다.

UPD1 빈 프로젝트로 두 번 확인했습니다. 코드가 올바르게 작동합니다. 공유 기본 설정은 부울 기본 유형이 아닌 부울 클래스를 사용합니다. 따라서 기본적으로 부울 값이 false 인 것은 아닙니다. 또한 디버깅에 따라 공유 된 환경 설정에는 시작될 때까지 FIRST_LAUNCH 값이 포함됩니다. 그래서 어떻게 거기에 도착했는지 보았습니다.

UPD2 마지막으로 붙였습니다. FirstLaunch에 대한 모든 언급을 삭제했지만 다른 값을 읽는 다른 호출이있을 때 SharedPreferences에 여전히 어떻게 든 나타납니다. 그래서 질문은 - 공유 된 환경 설정에서 저장된 값을 제거하는 방법입니다. http://take.ms/Rr0Xf

UPD3 내 저장된 환경 설정 파일의 이름을 변경 한 그것은했다. 문제는 응용 프로그램을 새로 설치 한 후에도 일부 장치가 저장된 기본 설정에 대한 정보를 유지하고 있다는 것입니다. PFM.

+0

은 환경 설정 데이터 삽입 및 읽기를위한 전체 코드를 공유합니다. –

+1

기본값은 true 여야합니다. –

+1

충분한 소스 코드 문제에 대한 충분한 정보를 제공 할 때까지 아무도 도움을 줄 수 없습니다 .. –

답변

0

에서 값을 얻기 위해 필요한 그래서 결국 나는 문제와 해결책을 발견했다.

android에서 Google은 Google 드라이브에서 응용 프로그램 백업을 유지하므로 공유 환경 설정을 다시 설치해도 복원되는 이유가 여기에 있습니다. 백업을 비활성화했습니다.

응용 프로그램 섹션의 프로젝트 매니페스트 파일은 android : allowBackup = "true"를 false로 설정합니다.

+0

이것은 참으로 끔찍한 특징입니다. – greenapps

1

포인트가 적어서 질문에 맞지 않을 수 있습니다. 따라서 FIRST_LAUNCH에 값을 설정하지 않았 으면 1입니다. 그런 다음 앱의 데이터를 정리합니다. 2. 제공해 주시겠습니까? 빈 값에서 반환있을 때 전체 소스 코드

그리고 @miller 하나 이상의 된 SharedPreferences

가있는 경우 어떤
1

그것의 기본적으로 부울 값이 false로 값을 설정하기 때문에이 .. 그것은 단지 진정한 가치를 소요 공유 환경 설정이지만 부울 값은 true 또는 false 값을 가져야합니다 ... null 값을 지원하지 않습니다.

그래서 당신은 프로그래밍 방식으로로드하기 전에 클래스에서 true로 세션의 부울 값을 설정하면된다 다음 세션

+0

큰 의미가 없습니다. – greenapps