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

Reply via email to