My application is somewhat complex and has lots of settable
preferences. Fortunately for the user, there are sensible defaults
that I can pre-configure. The SharedPreferences infrastructure
includes defaults in preferences.xml, which I have set accordingly.
The trouble is that if the user has never changed a particular
preference, then SharedPreferences.contains(key) returns false and
SharedPreferences.getXXX(key,default) returns the default field. This
creates a code management issue for defaults. The default values need
to be stored in two different places and kept in sync.

Ideally, the SharedPreferences infrastructure could be told to read in
the entire preferences.xml file so the SharedPreferences database is
loaded with all the initial values. But I haven't found any way to do
that. A key-value pair doesn't come into existence in the database
until the value is changed in the UI.

Second best would be to use the XMLReader to grab the default values,
something like this:

foo = SharedPreferences.getXXX(key,myDefaultReader(key));

Third best would be to store the defaults in their own file and manage
SharedPreferences files and defaults files as pairs. Then on
application startup the defaults file would be read and the values
propagated into the SharedPreferences database.

This is such a generic problem that I'm hoping someone has already
solved it and I can get something off the shelf. Any suggestions?

-- 
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.

ATTENTION: Android-Beginners will be permanently disabled on August 9 2010. For 
more information about this change, please read [http://goo.gl/xkfl] or visit 
the Group home page.

Try asking and tagging your question on Stack Overflow at
http://stackoverflow.com/questions/tagged/android

To unsubscribe from this group, send email to
android-beginners+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en

Reply via email to