2010-05-04 34 views
23

XML'de tanımlanmış bir Android tercihinin varsayılan değerini nasıl edinirsiniz? Hem kod hem de tercihler XML'deki varsayılan değerin tanımını tekrarlamak istemiyorum.Android tercihinin varsayılan değeri

+1

, xml tercihleri ​​dosyayı göndermek bir PreferenceScreen – Jorgesys

cevap

61

Sen kaynaklarında varsayılan değeri (/values/bool.xml) tanımlayabilir Tamsayı sabitlerini saklamak için res/values altında.

kodunda "@integer/default_brightness"

context.getResources().getInteger(R.integer.default_brightness)

+0

Bunu yapmanın güzel bir yolunu değiştirdim. Paylaşım için teşekkürler! – pilcrowpipe

+5

Tam olarak aradığım şey bu, teşekkürler. Bir ipucu: Yerelleştirmeyi önlemek için strings.xml dosyasında değil, ayrı bir dosyada (örn., Constants.xml) tanımlayın. – schnatterer

+6

@schnatterer: dizeleri farklı bir dosyaya taşımak yerelleştirmekten kaçınıyor. 'Strings.xml' dosya adı yalnızca bir sözleşmedir. Herhangi bir kaynak, doğru 'res /' alt klasörüne yerleştirilerek yerelleştirilebilir. Varsayılan ayarları ayrı bir kaynak dosyasına yerleştirmek muhtemelen iyi bir fikirdir. –

11

Öncelikle, tercih XML dosyanızı varsayılan değerleri tanımlamanız gerekir. Sonra arayarak ana Aktivite varsayılan değerlerle tercihlerini doldurabilirsiniz:

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

sadece dediğimiz bazı tercih almak gerektiğinde:

int value = prefs.getInt("key", null); 

tercihlerinizin doldurulur yana vermeyeceksin null değerini al.

SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context); 
Boolean value = context.getResources().getBoolean(R.bool.mypreference_default); 
Boolean b = p.getBoolean("mypreference", value); 
+2

Bu hala birileri hattını gelen bir tercih kaldırır olası duruma karşı koruma sağlamaz demek do referans prefereces.xml yılında XML ve bunu isteyen Java kodunu güncellemeyi unutur. Bu durumda, uygulama hala derlenecek, ancak bir NullPointerException ile sonuçlanacaksınız. – idolize

+0

Evet, bu doğru, ancak daha sonra gerekli tüm tercihlerin XML'den alınıp alınmadığını test etmek için bir İşlev Testi yapılmalıdır. – pixel

+1

bu aslında benim için hiç işe yaramadı. Bu yöntem çağrıldıktan sonra varsayılan değerler ayarlanmamış. – moonlightcheese

1

integer.xml oluşturun:

<resources> 
    <bool name="mypreference_default">true</bool> 
</resources> 

Kullanım preferences.xml değeri:

<CheckBoxPreference 
    android:defaultValue="@bool/mypreference_default" 
    android:key="mypreference" 
    android:title="@string/mypreference_title" /> 

Sonra kodunda kullanmak

İlgili konular