2011-09-08 2 views
10

ListPreference의 기본값을 설정하려고했지만 아무것도 표시되지 않았습니다.ListPreference 기본값이 표시되지 않습니다.

오류에 대한 내 코드를 확인할 수 있습니까?

감사합니다.

정말, 에마

이것은 Settings.XML이 파일에 : 나는 PreferenceManager를 호출 할 필요가 있음을 발견

<resources> 

    <string-array name="chimeVolumeLabels"> 
    <item>Default</item> 
    <item>Soft</item> 
    <item>Medium</item> 
    <item>Loud</item> 
    </string-array> 

    <string-array name="chimeVolumeValues"> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
    <item>4</item> 
    </string-array> 
</resources> 

답변

27

언젠가 응용 프로그램 데이터를 지울 필요가있는 것으로 나타났습니다. 앱을 제거하고 다시 설치하십시오. 그 후 모든 것이 예상대로 작동합니다.

+0

내 인생의 시간을 절약했습니다. – akashr

+0

이상한 행동, 고맙습니다. – speedDeveloper

+1

이것은 Android가 기본값 **을 한 번만 ** 설정합니다 - ** [this] (https://developer.android.com/reference/android/preference/PreferenceManager)를 참조하십시오. .html # setDefaultValues ​​(android.content.Context, % 20int, % 20boolean)) –

10

:

<PreferenceCategory android:title="Media:"> 
    <CheckBoxPreference android:key="ChimeWhenMusicIsPlaying" 
     android:title="@string/ChimeWhenMusicIsPlayingTitle" android:summary="@string/ChimeWhenMusicIsPlayingSummary" 
     android:defaultValue="false" /> 

    <ListPreference android:title="Chime Volume" 
     android:key="ChimeVolume" android:summary="Select volume for the chiming sound." 
     android:entries="@array/chimeVolumeLabels" android:entryValues="@array/chimeVolumeValues" 
     android:defaultValue="1" /> 

</PreferenceCategory> 

이 배열 파일에 .setDefaultValues ​​() 내 기본 설정 값을 초기에 나타나려면 내 기본 설정 작업.

public class PreferencesActivity extends PreferenceActivity { 

    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // This static call will reset default values only on the first ever read 
     PreferenceManager.setDefaultValues(getBaseContext(), R.xml.settings, false); 

     addPreferencesFromResource(R.xml.settings); 
    } 
} 
+2

+1이 답변입니다. 애플리케이션의 설치 후 처음으로 환경 설정 활동이 호출 될 때까지 xml에 * android : defaultValue * 속성이 설정되어 있어도 * sharedPreferences.getString (key, null) *을 호출하면 null이 반환됩니다. 처음으로 응용 프로그램에서 환경 설정 활동이 호출되기 전에 기본 환경 설정 값을 사용할 수 있어야한다면 PreferenceManager.setDefaultValues ​​() 호출은 훌륭한 해결책입니다. – pavel

관련 문제