2011-09-08 40 views
10

ListPreference için varsayılan değeri ayarlamayı denedim, ancak hiçbir şey görünmüyor.ListÖnceki varsayılan değer gösterilmiyor

Herhangi bir hata için kodumu kontrol edebilir misiniz?

Teşekkürler.

Gerçekten, Emad

Bu settings.xml dosyasında geçerli: Ben PreferenceManager aramak zorunda olduğu tespit

<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> 

cevap

27

Bazen uygulama verilerini temizlemem gerekiyor. Uygulamayı kaldırın ve yeniden yükleyin. Bundan sonra, her şey beklendiği gibi çalışır. Bu cevap için

+0

Hayatımın saatlerini kaydettiniz. – akashr

+0

garip davranış, teşekkürler – speedDeveloper

+1

Bu, Android'in varsayılan değerleri yalnızca bir kez ** belirleyeceği gerçeğinden kaynaklanıyor olabilir - bkz. [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> 

Bu diziler dosyada olduğu Varsayılan değerin başlangıçta görünmesi için Tercihler Etkinliğim'de .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. Tercihler etkinliği, uygulamanın kurulumundan sonra ilk kez çalıştırılıncaya kadar * android: defaultValue * özniteliği xml olarak ayarlanmış olsa bile * sharedPreferences.getString (key, null) * araması null değerini döndürecektir. PreferenceManager.setDefaultValues ​​() çağrısı, tercihler etkinliğinin ilk kez uygulamada çağrılmasından önce kullanılabilir olması gerekiyorsa, harika bir çözümdür. – pavel