studio programacion herramientas fundamentos con avanzado aplicaciones android xml android-preferences

programacion - manual de android en pdf



Inicializar las preferencias de XML en la actividad principal (3)

En onCreate() de su Activity principal solo llame al método PreferenceManager.setDefaultValues() .

PreferenceManager.setDefaultValues(this, R.xml.preference, false);

Esto leerá su archivo preference.xml y establecerá los valores predeterminados definidos allí. Establecer el argumento readAgain en false significa que esto solo establecerá los valores predeterminados si nunca se ha llamado a este método en el pasado, por lo que no tiene que preocuparse por anular la configuración del usuario cada vez que se crea su Activity .

Mi problema es que cuando inicio la aplicación y el usuario no abrí mi PreferenceActivity cuando los recupero no obtengo ningún valor predeterminado definido en mi archivo preference.xml.

archivo preference.xml:

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="applicationPreference" android:title="@string/config" > <ListPreference android:key="pref1" android:defaultValue="default" android:title="Title" android:summary="Summary" android:entries="@array/entry_names" android:entryValues="@array/entry_values" android:dialogTitle="@string/dialog_title" /> </PreferenceScreen>

Fragmento de mi actividad principal (método onCreate ):

SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this); String pref1 = appPreferences.getString("pref1", null);

En resultado, termino con un valor null .


Seré breve. :)

strings.xml (en realidad tengo prefs.xml exclusivamente para preferencias):

<string name="pref_mypref_key">mypref</string> <string name="pref_mypref_default">blah</string>

preferences.xml :

android:key="@string/pref_mypref_key" android:defaultValue="@string/pref_mypref_default"

MyActivity.java :

String myprefVal = prefs.getString(getString(R.string.pref_mypref_key), getString(R.string.pref_mypref_default));


Su llamada a getString() tiene null como el segundo parámetro. Cambie eso para que sea el valor predeterminado que desee.