2010-05-20 32 views
50

Sorunum, uygulamayı başlattığımda ve kullanıcı PreferenceActivity açmamı, böylece onları preference.xml dosyasında tanımlı varsayılan değerler almamalarıdır.Ana Aktivitede XML'den tercihleri ​​sıfırla

preference.xml dosyası: benim ana Aktivite (onCreate yöntemi) den

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
    android:key="applicationPreference" android:title="@string/config" 
    > 
    <ListPreference 
      android:key="pref1" 
      android:defaultValue="default" 
      android:title="Title" 
      android:summary="Summary" 
      android:entries="@array/entry_names" 
      android:entryValues="@array/entry_values" 
      android:dialogTitle="@string/dialog_title" 
    />     
</PreferenceScreen> 

Pasaj: Sonuç olarak

SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);   
    String pref1 = appPreferences.getString("pref1", null); 

Ben null değeri ile bitirmek.

cevap

105

Activity ana sayfanızın onCreate() numaralı telefonundan the PreferenceManager.setDefaultValues() method numaralı telefonu arayın.

PreferenceManager.setDefaultValues(this, R.xml.preference, false); 

Bu preference.xml dosyayı okumak ve orada tanımlanmış varsayılan değerleri ayarlar. readAgain bağımsız değişkenini false olarak ayarlamak, yalnızca bu yöntemi geçmişte hiç çağrılmadıysa varsayılan değerleri ayarlayacağınız anlamına gelir; böylece, Activity ürününüz her oluşturduğunuzda kullanıcı ayarlarının geçersiz kılınması konusunda endişelenmeniz gerekmez.

+4

ama herkes bu referans için bu perference.xml için örnek veya şablona sahip mi? –

+8

Günümü kurtardın! Null değerinde 3 saat mi arıyorsunuz? Teşekkürler! – Cimm

+1

@Dave Webb Bu, dize tercihleri ​​için çalışmaz. – Anderson

8

getString() numaralı aramanız, ikinci parametre olarak null numaralı aramaya sahiptir. İstediğiniz varsayılan değer olarak değiştirin.

+6

Bu çok zarif bir çözümdür. +1. Ancak, OP'nin istediği şeyi elde etmek için, PreferenceManager.setDefaultValues ​​() çözümdür. – ef2011

14

Özetle.

<string name="pref_mypref_key">mypref</string> 
<string name="pref_mypref_default">blah</string> 

preferences.xml: :) strings.xml

(aslında tercihleri ​​için özel prefs.xml var)

android:key="@string/pref_mypref_key" 
android:defaultValue="@string/pref_mypref_default" 

MyActivity.java :

String myprefVal = prefs.getString(getString(R.string.pref_mypref_key), getString(R.string.pref_mypref_default)); 
+0

Teşekkürler, bu aslında tercih tuşlarının nerede saklanacağı ile ilgili başka bir soruya cevaptır :) Eğer bu soruya en iyi cevabı birleştirebileceksem harika olacak! – pixel

+2

Görünüşe göre, bu örnekte, bu satır 'myprefVal' öyküsünden önce MyActivity.java' içinde görünecektir:' SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences (this); ' – hotshot309

+3

Bu işe yarıyor, ancak bu gerçekten gerekli olmalı? – JohnyTex