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
cevap
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)
Bunu yapmanın güzel bir yolunu değiştirdim. Paylaşım için teşekkürler! – pilcrowpipe
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
@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. –
Ö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);
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
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
bu aslında benim için hiç işe yaramadı. Bu yöntem çağrıldıktan sonra varsayılan değerler ayarlanmamış. – moonlightcheese
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
, xml tercihleri dosyayı göndermek bir PreferenceScreen – Jorgesys