2011-11-16 6 views
1

기본 키가 존재하지 않을 때 다른 값을 반환하려는 시도에도 불구하고 defaultValue는 항상 0으로 반환됩니다. 이유가 궁금합니다. PREFS_OLD_TRIM - 더 현 키가 없다는 것을, 초기 실행에서 확실히 내가 아는sharedPreference 키의 defaultValue는 항상 0입니다.

public static final String PREFS_NAME = "MyPrefsFile"; 
public static final String PREFS_OLD_TRIM = "trimName"; 
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
int trim_val = settings.getInt(PREFS_OLD_TRIM, 7); 

, - 여기에 코드 내 조각입니다. 그래서 trim_val이 7이라는 값을 얻길 기대 했었습니다.하지만 0이되었습니다.

나는 무엇이 누락 되었습니까? 감사. API 레벨 8 기기 세트를 타겟팅하고 있습니다.

+0

당신은 설정 변수에 적절한 SharedPreferences를 얻고 있습니까? 그렇다면 SharedPreferences 객체를 설정으로 반환합니까? – Hiral

+0

예. 왜냐하면 다른 값들은 내가 기대하기 때문입니다. –

+0

'onCreate' 메서드 내에서'getSharedPreferences' 메서드를 호출 해 보셨습니까? – oceanpriest

답변

0

안전하게 실행하려면 매번 실행시 PREFS_OLD_TRIM을 임의의 값으로 변경하십시오. 이렇게하면 환경 설정 파일에 해당 키가 없음을 확인할 수 있습니다.

+0

jeez. 아이디어를위한 thx. 그것은 효과가 있었다. 모든 환경 설정이 지워졌고 이번에는 동일한 PREFS_OLD_TRIM 키로 작업했습니다. –

0

확실한 점은 Preference는 값을 제공하고 커밋 (저장)하기 전까지 항상 기본값 만 반환한다는 것입니다. 그래서 여기에서는 공유 환경 설정에없는 값을 가져 오려고 시도합니다. 반환 값을 묻는 값을 지정 했음에도 불구하고 분명히 기본값 만 반환합니다.

+0

글쎄, 그게 다큐멘터리에 반대한다. Returns 환경 설정 값이 존재한다면 그것을 반환하거나, defValue를 반환한다. ClassCastException -이 이름이 int가 아닌 환경 설정이있는 경우. –

관련 문제