Finally, I've found a solution to this problem! The official documentation for the preferences activity has just been updated. Check out the paragraph about "Building a Custom Preference" http://developer.android.com/guide/topics/ui/settings.html#Custom
You have to implemenet both of the following methods the way it is described. Now *PreferenceManager.setDefaultValues()* also works for my custom dialog! protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) protected Object onGetDefaultValue(TypedArray a, int index) On Sunday, July 15, 2012 2:18:37 PM UTC+2, jdr88 wrote: > > I just came across the same issue and can confirm the same behaviour: > > *android:defaultValue* of a custom DialogPreference is *not* set > with PreferenceManager.setDefaultValues() method. > > Seems like a bug? > I'm using now the solution that you proposed... > > > On Thursday, 13 October 2011 23:11:27 UTC+2, tlegras wrote: >> >> Okay, I give up. >> My preference default value will be copied in the preference access code >> as well: >> >> value = sharedPref.getInt(mykey,myDirtyHardcodedDefaultValue ); >> >> >> If ever someone has a better solution, it will be welcome :) >> >> Thierry. >> >> >> 2011/10/11 Thierry Legras <[email protected]> >> >>> Hi Ibendlin, >>> >>> Thanks for helping me :) >>> >>> I don't think the problem is in SeekBarPreference.onSetInitialValue() >>> function itself as it is never called (I have put a log in it to check). >>> There is certainly an issue somewhere in my implementation; when >>> setDefaultValues is called, only SeekBarPreference constructor is called. >>> >>> I was suspecting the xml, but I don't see any problem in it >>> (android:defaultValue is set and android:persistent as well): >>> >>> <com.tlegras.tools.SeekBarPreference >>> android:key="preferences_epg_daytostore" >>> android:title="@string/preferences_epg_daytostore_title" >>> android:summary="@string/preferences_epg_daytostore_summary" >>> android:dialogMessage="Nombre de journées à télécharger. >>> Attention, plus ce nombre est élevé, plus le chargement sera long et >>> moins l'application sera réactive." >>> android:text=" jour(s)" >>> android:defaultValue="4" >>> android:max="5" >>> android:persistent="true" >>> /> >>> >>> >>> 2011/10/11 lbendlin <[email protected]> >>> >>>> it took me a few weeks to get that right. here's my example for a >>>> boolean value. And yes, .setDefaultValues is actually working, despite >>>> what >>>> you may think :-/ >>>> >>>> @Override >>>> protected void onSetInitialValue(boolean restoreValue, Object >>>> defaultValue) { >>>> boolean temp = restoreValue ? getPersistedBoolean(false) : >>>> defaultValue.toString().equals("true") ? true : false; >>>> if (!restoreValue) >>>> persistBoolean(temp); >>>> this.oldValue = temp; >>>> } >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Android Developers" group. >>>> To post to this group, send email to >>>> [email protected] >>>> To unsubscribe from this group, send email to >>>> [email protected] >>>> For more options, visit this group at >>>> http://groups.google.com/group/android-developers?hl=en >>> >>> >>> >>> >>> -- >>> Thierry. >>> >> >> >> >> -- >> Thierry. >> > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

