Preferencias compartidas en Android

Hoy veremos la forma más fácil de almacenar datos con una aplicación de muestra. Generalmente, cuando decimos almacenar datos, primero pensamos en SQL, MongoDB, etc. Pero pronto veremos que no los necesitamos para datos simples .
Cuando decimos datos simples, generalmente guardamos datos como la edad del usuario , de qué país es y su configuración preferida . Estos datos no se pierden aunque el usuario cierre la aplicación.
¿Qué es Preferencias Compartidas?
Podemos guardar datos simples sin necesidad de nada extra. Es una estructura que funciona con un par Clave-Valor . Los tipos de datos que podemos almacenar se limitan a; Int, Boolean, Float, Long y String.
Ahora usemos esta estructura en una aplicación en la que obtenemos la edad del usuario y la guardamos. (Dejo el enlace de GitHub aquí ).
class MainActivity : AppCompatActivity() {
private lateinit var preferences : SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
preferences = this.getSharedPreferences("com.aliduman.savemyage"
, Context.MODE_PRIVATE)
}
esto :
Lo usamos para mostrar la actividad en la que estamos.
com.aliduman.savemyage:
En esta parte solo nos pide un nombre. Generalmente, ponemos el nombre del paquete en esta parte.
Contexto.MODE_PRIVATE:
El modo define quién puede acceder a las preferencias de nuestra aplicación. Privado es el modo predeterminado y establece que solo se puede acceder desde esta aplicación.

Usemos SharedPreferences después de hacer las definiciones y configuraciones. Nuestro objetivo es ingresar y guardar la edad del usuario, luego almacenar esta edad y mostrársela al usuario después de cerrar y abrir la aplicación.
var currentAge = preferences.getInt("age",-1)
getInt():
Este método devuelve el valor dado. Si no se crea antes, lo hará.
edad:
Esta es la clave del valor que queremos mantener.
-1:
Este parámetro lo usamos para asignar un valor por defecto si no se ingresa ningún dato.
if (currentAge != -1) { //if user saved age before..
age_text.hint = currentAge.toString()
} else {//if first time user saved age
save_button.setOnClickListener {
var ageInput = Integer.valueOf(age_text.text.toString())
preferences.edit().putInt("age", ageInput).apply() //We save it to SharedPreferences.
}
}
editar()
Lo usamos para hacer cambios o cesiones en nuestro valor.
ponerInt()
Lo usamos para poner datos en lo que almacenamos.
aplicar()
este método es necesario para implementar todos estos cambios.

El usuario ingresa el número 23 y presiona el botón guardar.↑

Final feliz, cuando el usuario vuelve a ingresar a la aplicación, podemos mostrar su edad con nuestro algoritmo y SharedPreferences.↑
!¡ADVERTENCIA!
Omití algunos pasos importantes como la comprobación de valores nulos para centrarme en SharedPreferences. No olvide verificar si los datos que ingresa el usuario son nulos o no. Código limpio, código confiable