Jake,

My turn to think I'm missing something.

I imagine you have a subclass of PreferenceActivity, with onCreate
calling addPreferencesFromResource(R.xml.<some
xml id here>).

In that XML file, you have your preference item definitions.

You can use your own {sub}classes in that XML file, just like with layouts
and views (e.g. for a list-of-options type preference, I got sick of having
to convert between integers and strings at some point, which is necessary if
you use ListPreference, and wrote my own class that uses a list of
integers).

Now as it turns out, PreferenceScreen is "final" (what the?) so you can't
subclass that, but PreferenceCategory is not final, so it can be subclassed
and specified in the XML.

-- Kostya

2011/5/26 Jake Colman <col...@ppllc.com>

>
> Kostya,
>
> Maybe I'm missing something obvious here but where do I get an
> opportunity to provide Android with my extended PreferenceGroup or
> PreferenceScreen?  I need to make sure that my addPreference method
> called during the processing sequence initiated by
> addPreferencesFromResource.  But how would that code know to use my
> extended PreferenceScreen so that it uses my overridden addPreference
> method?  Is there a 'set' method somewhere that allows me to specify my
> extended class?
>
> ...Jake
>
>
> >>>>> "KV" == Kostya Vasilyev <kmans...@gmail.com> writes:
>
>    KV> Preference.onSetInitialValue is triggered by
>   KV> addPreferencesFromResource, which in turn is called from within
>   KV> your activity's onCreate - not before.
>
>   KV> However, this happens before your code has a change to call
>   KV> findPreference / setKey.
>
>   KV> One of the methods that gets called while this is taking place is
>   KV> PreferenceGroup.addPreference. This could be a reasonable place
>   KV> to reset the keys, so it happens before onSetInitialValue. The
>   KV> actual subclasses are PreferenceScreen and PreferenceCategory.
>
>   KV> You can check for a specifc runtime class by using Java
>   KV> 'instanceof' operator (but this should not be necessary with
>   KV> overiding addPreference).
>
>   KV> -- Kostya
>
>   KV> 2011/5/26 Jake Colman <col...@ppllc.com>
>
>   >> >>>>> "S" == String  <sterling.ud...@googlemail.com> writes:
>   >>
>   S> On Thursday, May 26, 2011 2:44:37 AM UTC+1, Jake Colman wrote:
>   >>
>   S> The only issue is when I launch the Preference
>   >> >> Activity from the widget it does not display the widget-specific
>   >> value
>   >> >> but displays the preference's default value.
>   >> >>
>   S> Are you actively setting the value for each of your
>   S> widget-specific preferences, or are you just setting the key and
>   S> hoping they'll pick up the correct (initial) value from the
>   S> SharedPreferences? I think you need to do the former rather than
>   S> the latter.
>   >>
>   S> IOW, my experience is that the initialization of the preferences
>   S> in a PreferenceActivity happens before your onCreate() handler is
>   S> called, so changing preferences' keys there won't affect their
>   S> displayed values. You should just need a simple call to
>   S> setChecked() for each boolean preference to initialize it to the
>   S> appropriate, widget-specific value.
>   >>
>   >> String,
>   >>
>   >> What I am seeing is consistent with what you stated, namely, that by
> the
>   >> time onCreate is called, the preferences are already initialized so
> the
>   >> displayed values have already been set.  But why does this only effect
>   >> my CheckBoxPreferences whil my ListPrefeference values are being set
>   >> correctly?
>   >>
>   >> When I call findPreference is there a way for me to determine the
>   >> specific derived Preference class that I acually got?  With C++ I can
>   >> dynamic_cast the base class to find out its actual type.  How does one
>   >> do the same in Java?  If so, then in the method that resets the
> generic
>   >> preference key to a widget-specific key I can check whether the
>   >> Preference is actually a checkbox and then get and set its actual
> value.
>   >>
>   >> Hmmmmm.  Maybe I should just write some code to always just drill into
>   >> the SharedPreferences and manually set the value across all types.  As
>   >> long as I can query the Preference object to get its specific type, I
>   >> can generically explicitly set the value for all preferences.
>   >>
>   >> --
>   >> Jake Colman -- Android Tinkerer
>   >>
>   >> --
>   >> You received this message because you are subscribed to the Google
>   >> Groups "Android Developers" group.
>   >> To post to this group, send email to
> android-developers@googlegroups.com
>   >> To unsubscribe from this group, send email to
>   >> android-developers+unsubscr...@googlegroups.com
>   >> For more options, visit this group at
>   >> http://groups.google.com/group/android-developers?hl=en
>   >>
>
>    KV> --
>   KV> You received this message because you are subscribed to the Google
>   KV> Groups "Android Developers" group.
>    KV> To post to this group, send email to
> android-developers@googlegroups.com
>   KV> To unsubscribe from this group, send email to
>   KV> android-developers+unsubscr...@googlegroups.com
>   KV> For more options, visit this group at
>   KV> http://groups.google.com/group/android-developers?hl=en
>
> --
> Jake Colman -- Android Tinkerer
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to