Shared preferences
Manejo de preferencias
Gestión de datos (1. Preferencias en la Plataforma Moodle)
Shared Preferences
Ejemplo: GamePreferences
Crear un nuevo proyecto en Kotlin llamado PreferenciasKotlin
fichero res/values/dimens.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- Default screen margins, per the Android Design guidelines. --> <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen> </resources>
fichero res/values/strings.xml
<resources> <string name="app_name">Preferencias</string> <string name="ejemplo">Ejemplo de Preferencias utilizando la clase PreferenceFragment</string> <string name="boton">Preferencias</string> </resources>
fichero res/values/codigovelocidad.xml
<?xml version="1.0" encoding="utf-8" ?> <resources> <string-array name="velocidad"> <item>Lento</item> <item>Medio</item> <item>Rápido</item> </string-array> <string-array name="codigovelocidad"> <item>1</item> <item>2</item> <item>3</item> </string-array> </resources>
fichero res/xml/preferencias.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:title="Datos personales"> <EditTextPreference android:key="nombre" android:title="Nombre del usuario" android:summary="Introduce aquí tu nombre" android:dialogTitle="Nombre" /> </PreferenceCategory> <PreferenceCategory android:title="Efecto de la bola"> <CheckBoxPreference android:key="rebote" android:title="Rebote" android:summary="La bola rebotará en la pantalla" /> <ListPreference android:key="velocidad" android:title="Velocidad" android:summary="Selecciona la velocidad de la bola" android:dialogTitle="Elige velocidad:" android:entries="@array/velocidad" android:entryValues="@array/codigovelocidad" /> </PreferenceCategory> </PreferenceScreen>
activity_main.xml
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/relativeLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="@string/ejemplo" android:textSize="32sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.332" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24dp" android:text="@string/boton" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView1" /> </androidx.constraintlayout.widget.ConstraintLayout>
MiFragmentoPref.kt
class MiFragmentoPref : PreferenceFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) addPreferencesFromResource(R.xml.preferencias) } }
ActividadPreferences.kt
class ActividadPreferences : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) fragmentManager.beginTransaction() .replace(R.id.content, MiFragmentoPref()) .commit() } }
Declarar la actividad en el manifiesto
<activity android:name=".ActividadPreferences" android:exported="false" />
MainActivity.kt
class MainActivity : Activity(), View.OnClickListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val boton = findViewById<View>(R.id.button1) as Button boton.setOnClickListener(this) } override fun onClick(v: View) { abrirActividadPreferencias() } fun abrirActividadPreferencias() { val intentAbrir = Intent(this, ActividadPreferences::class.java) startActivity(intentAbrir) } }
Ejemplo: SharedPreferences en Kotlin
Android Shared Preferences Example Tutorial
Crear un nuevo proyecto en Kotlin llamado SharedPreferencesKotlin
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <EditText android:id="@+id/etName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="49dp" android:layout_marginTop="27dp" android:ems="10" android:inputType="text" android:text="Name" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id="@+id/etEmail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="1dp" android:layout_marginTop="23dp" android:ems="10" android:inputType="text" android:text="Email" app:layout_constraintStart_toStartOf="@+id/etName" app:layout_constraintTop_toBottomOf="@+id/etName" /> <Button android:id="@+id/buttonSave" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="18dp" android:text="Save" android:onClick="Save" app:layout_constraintBaseline_toBaselineOf="@+id/buttonGet" app:layout_constraintStart_toStartOf="parent" /> <Button android:id="@+id/buttonGet" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="31dp" android:layout_marginEnd="22dp" android:text="Get" android:onClick="Get" app:layout_constraintEnd_toEndOf="@+id/etEmail" app:layout_constraintTop_toBottomOf="@+id/etEmail" /> <Button android:id="@+id/buttonClear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="13dp" android:text="Clear" android:onClick="clear" app:layout_constraintBaseline_toBaselineOf="@+id/buttonGet" app:layout_constraintStart_toEndOf="@+id/etEmail" /> </androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
class MainActivity : Activity() { lateinit var sharedpreferences: SharedPreferences lateinit var name: EditText lateinit var email: EditText companion object { const val mypreference = "mypref" const val Name = "nameKey" const val Email = "emailKey" } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) name = findViewById<View>(R.id.etName) as EditText email = findViewById<View>(R.id.etEmail) as EditText sharedpreferences = getSharedPreferences(mypreference, MODE_PRIVATE) if (sharedpreferences.contains(Name)) { name.setText(sharedpreferences.getString(Name, "")) } if (sharedpreferences.contains(Email)) { email.setText(sharedpreferences.getString(Email, "")) } } fun Save(view: View) { val n = name.text.toString() val e = email.text.toString() val editor = sharedpreferences.edit() editor.putString(Name, n) editor.putString(Email, e) editor.commit() } fun clear(view: View) { name.setText("") email.setText("") } fun Get(view: View) { sharedpreferences = getSharedPreferences(mypreference, MODE_PRIVATE) if (sharedpreferences.contains(Name)) { name!!.setText(sharedpreferences.getString(Name, "")) } if (sharedpreferences.contains(Email)) { email!!.setText(sharedpreferences.getString(Email, "")) } } }
Código de SharedPreferencesKotlin
Tarea online: Conversión € / $
Más información:
Android fundamentals 09.2: App settings
Código de DroidCafeWithSettings
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.