2011-10-20 6 views
2

에서 사용할 수 있도록 기본 설정 XML에 설정된 기본값이 필요합니다. 먼저이 실행됩니다.android : defaultValue가 일부 휴대 전화에서 작동하지 않습니다. 해결 방법은 무엇입니까?

일부 휴대 전화에서는 작동하지만 일부 다른 휴대 전화 (예 : Samsung)는 매우 이상하게 작동합니다. 내 특정 경우

, 다음 코드

String key = "@string/timeout_key" 
timeout = Integer.valueOf(prefs.getString(key, "10")); 

환경 설정 XML은, "10"(prefs.getString()에 두번째 매개 변수로 전달)의 기본값 (timeout에) 돌아 지정 유지 있지만 :

android:defaultValue="5" 

"timeout_key"문자열이 있으며 올바르게 읽었는지 확인할 수 있습니다.

"수동 해결 방법"은 현재 설정 편집기를 호출하고 설정을 다시 입력 한 다음 확인을 누릅니다.

프로그래밍 방식으로이 작업을 수행 할 수있는 방법이 있습니까?

답변

2

SharedPreferences.getString() 메서드는 버그가있어서 android:defaultValue을 반환하지 않습니다. 읽기에 실패하면 두 번째 매개 변수 만 반환합니다. 이 문제를 해결하기 위해, 두 번째 PARAM에 을 넣어 : 물론이 뜻이 예외 당신이 응용 프로그램을 설치 한 후 호출 처음 던져

timeout = Integer.valueOf(prefs.getString(key, null)); 

, 그래서 당신이 할 것은 try과로 묶입니다 (안드로이드 버그가 아니었다면 DEFAULTVALUE 원래 사용하기위한 안드로이드의 하나) : 예외를 잡는 경우, 기본 쓰기

try { 
    timeout = Integer.valueOf(prefs.getString(key, null)); 
} 
catch (Exception e) { 
    Editor editor = prefs.edit(); 
    editor.putString(key, Integer.toString(defaultValue)); 
    editor.commit(); 
} 

미운하지만 작품.

+0

믿을 수 없습니다. 귀하의 트릭 덕분에 나는 지금 일하고 있습니다. – ateiob

관련 문제