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
.
Esta pregunta ya tiene una respuesta aquí:
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.