2010-04-02 7 views
0

다음과 같은 문제가 있습니다. 내 응용 프로그램에 여러 가지 기본 설정이 sharedPreferences에 저장되어있어 응용 프로그램의 여러 설정을 기록합니다. 이들은 일부 문자열입니다. 이 설정에 대한 일부 기본값으로 시작하는 응용 프로그램이 있기를 원하면 onCreate에서 관련된 각 sharedPreference가 null인지 확인하는 각 설정에 대해 "Setting"객체를 만들고 기본 값을 다음과 같이 설정합니다. sharedPreference.ListPreferences의 이상한 동작

Setting(int setting, String default) 
{ 
    storedPref=sharedPref.getString(getText(setting),null); 
    if(storedPref==null) 
    { 
     SharedPreferences.Editor edit=sharedPred.edit() 
     edit.putString(getText(setting),default); 
     edit.comit 
    } 
} 

이러한 설정과 관련된보기는 ListPreferences()입니다. 처음 응용 프로그램을 열면 선택한 목록이 기본값 인 옵션 목록이 표시되지만 때로는 옵션이 선택되지 않고 의도하지 않은 기본 옵션도 선택되지 않는 경우가 있습니다.

listPreferences는 배열을 "entries 태그"및 "values ​​태그"로 설정하여 xml로 생성됩니다. 나는 정말로 모르겠다. 디폴트를위한 Setting 객체의 생성자, 엔트리 배열의 멤버, 또는 값 하나의 무언가를 전달해야 하는가? 항목의 구성원을 전달하면 Listpreferences가 예상되는 동작을하고 일부는 위에서 설명한 내용을 갖게됩니다. 그렇지 않으면 값 배열에서 뭔가를 전달하면 같은 일이 발생합니다! 아무도 이상한 행동을하는 사람이 있습니까? 당신은 그냥 쉽게 쓸 수

답변

0

SharedPreferences.getString의 두 번째 매개 변수()이 키가없는 경우 반환되는 디폴트 값이기 때문에,

Setting(int setting, String default) 
{ 
    storedPref=sharedPref.getString(getText(setting),default); 
} 
+0

네,하지만 기본 내가 필요하다, 저장되는 것은 아닙니다보다. –

1

당신은 환경 설정 파일을 체크 아웃해야합니다, 과 키를 인식하고 형식은 우리의 ListPreference에 의해 사용되는, 당신은

다음과 같은 폴더에의 환경 설정 파일을 찾을 것이다 SharedPreferences.Editor에 동일한 키 값 쌍을 사용

/data/data/com.your.package/shared_prefs/ 

당신은 콘솔에서 실행하여 거기 :

adb shell 
cd /data/data/com.your.package/shared_prefs/ 
ls 
+0

키 및 형식은 무엇을 의미합니까? –

+0

기본값 (K, V)과 같은 설정 키와 형식을 사용하는 경우 기본값을 저장할 때 동일한 매개 변수를 사용합니다. –