Muy bien, me encuentro en mi proyecto anterior que acabamos de generar un archivo. A continuación, vamos a generar una preferencia compartida. Lo que vamos hacer como preferencia compartida es que vamos a aprovechar la interfaz que you tenemos. Y vamos a crear otro campo, un campo de correo electrónico. Donde un usuario va colocar su nombre y su correo electrónico, y además vamos agregar dos botones más. Un botón que diga guardar preferencia y otro botón que precisamente nos muestre la preferencia que acabamos de guardar. Ok, entonces voy a ir a mi vista de texto. Voy a hacer esto de nuevo más grande, aquí está, y voy a ver el preview, listo. Y entonces, ahora voy a generar mi edit text adicional, y voy a poner width que sea match parent y en height, wrap content. Éste va a decir android:id, por aquí vamos a colocar edtCorreo. Y además, también vamos a colocarle un hint que diga correo electrónico. Recuerda que puedes utilizar uno de los editText que son precisamente para manejar el correo electrónico. Ok, no hay ningún problema. Voy a colocar aquí correo. Para que este texto aparezca en modo de sombra, vamos a poner Android hint, para que aparezca en modo de sombra. Por acá. Listo you se debe ver, you está ahí. Muy bien, el botón de guardar archivo realmente lo voy a poner hasta abajo. Me interesa que primeramente estén los dos botones. Mi primer botón va ser match parent y wrap content. El primer botón será el id de este botón. Que se llamará "guardarPreferencia". No olvides primeramente también colocar el tipo de dato. Y vamos a colocarle también un texto. Entonces, para de una vez crear nuestro segundo botón, vamos a ponerlo por aquí. Vamos a decirle aquí, en vez de guardar que se llame mostrar. "MostrarPreferencia". you están los dos botones, simplemente ahora vamos a nuestro archivo Strings a generar nuestros dos strings que mostrarán el texto "botón_guardar_preferencia". Y le vamos a poner aquí guardar preferencia. En vez de guardar archivo le vamos a decir preferencia, recuerda que son preferencias compartidas, o en inglés shared preferences. Y vamos a poner aquí también esto, en vez de guardar dirá mostrar preferencia. Ok, le vamos a poner aquí vamos a copiar este textito para que sea mucho más rápido. Y en vez de guardar dirá mostrar, listo. Y entonces a cada botón en su propiedad text, le vamos a asignar por supuesto, le vamos a poner Android text. Vamos a decirle, este es el segundo botón, que realmente lo que va a hacer es mostrar la preferencia y, por acá, Android text, le vamos a decir botón de guardar preferencia. Ahí está listo, you está perfecta you nuestra interfaz. Lo que queramos hacer. Ahora, necesitamos añadir acá debajo un text view o un elemento donde, pues cuando you estemos guardando las preferencias y le demos mostrar preferencia. Necesitamos mostrar en algún lado la preferencia. Ok, entonces debajo de nuestro botón vamos a colocar un TextView. Un TextView que diga match parent wrap content. Le vamos a poner, también por supuesto, recuerda, es muy buena práctica manejar los ids, le vamos a decir preferencia compartida. Preferencia compartida. Entonces, la preferencia compartida realmente va a vivir el tiempo que viva tu aplicación en el teléfono. Entonces, esto es una persistencia muy agradable porque va a funcionar un poco como las bases de datos. El tiempo que viva nuestra preferencia compartida, nuestra aplicación, es el tiempo en que va a vivir pues, nuestra preferencia compartida. Entonces, aquí en el TextView lo único que voy a colocar es el nombre de la aplicación. Esto es un texto domi, puede tener el texto que tú quieras, el texto que tú quieras mostrar y perfecto. Entonces, ahora vamos a nuestro archivo main activity. Nuestro archivo main activity, ahí vamos a crear dos métodos. Ok, vamos a crear dos métodos. Recuerda que un método debe responder al click del botón y debe decir guardar preferencia. Ok, eso es lo que va decir nuestro primer método. Va recibir el view del botón y bien. Vamos a comenzar a crear nuestra preferencia. De una vez vamos a crear por aquí nuestro segundo método. Ok, y le vamos a decir por acá mostrar preferencia. Y aprovechando que hemos definido únicamente los métodos, iremos a nuestros botones para de una vez asignarles. De una vez asignarles pues los métodos que deben llevar. Éste es el botón de mostrar preferencia y por acá, Android onClick, el método de guardar preferencia. Perfecto. Regresamos a nuestro main activity y vamos a comenzar a crear you nuestra preferencia compartida. Recuerda que debemos crear un objeto que se llame SharedPrefrences aquí está, le vamos a poner aquí. Y le vamos a poner mi preferencia compartida. Y lo que vamos a hacer aquí es inicializar esto con el método getSharedPreferences. Lo que va recibir como primer atributo, como primer parámetro dice ahí String name. String name será el nombre de nuestro archivo que va contener todas las preferencias. Esto hasta el momento ahorita, probablemente no lo puedes visualizar bien pero en realidad la forma como lo visualizas mejor será cuando you corramos nuestro proyecto. Ok, entonces por el momento vamos a colocar mis datos personales. Mis datos personales que será el nombre de nuestro usuario que asigne por ahí. Entonces vamos a poner el contexto. Esto realmente va funcionar también como un archivo, pero en vez de ser un archivo sencillo como lo estuvimos manejando, esto será un archivo xml. Un archivo xml que va contener la colección de preferencias. Lo he asignado en modo privado. Recuerda que el modo privado lo que hace es que siempre va estar sobre escribiendo la preferencia. Y al igual que en el anterior ejemplo, puedes también asignar el modo que prefieras. Entonces esto es mi objeto preferencia, simplemente por aquí voy a dar un salto línea para que podamos estar viendo mejor el código. Ahora es necesario declarar un editor. Utilizando la misma clase SharedPreferences, vamos a utilizar la interfaz editor. Entonces voy a declarar aquí un objeto que sea nuestro editor. Y a partir del objeto preferencia, mi preferencia compartida, vamos a inicializar este editor. Precisamente con la cualidad o con el método de edit. Este objeto editor va tener habilitado, va tener asignada la preferencia pero en modo de edición. Ok, entonces a partir de este momento es que you vamos a poder estar asignando o editando el archivo que hemos creado por aquí. Entonces lo que vamos a estar guardando en este archivo, recuerda, es el nombre de la persona, el nombre que ha escrito. Y también el correo de esa persona, el correo que ha escrito. Entonces para ello necesito estar declarando edtNombre, y estar por aquí haciendo mi casteo, EditText. Vamos a ponerle un findViewById(R.id.edtNombre). Listo, esto también lo vamos a poner para el correo. Simplemente lo que hice ahorita en este momento fue hacer un copy paste, y no te olvides de también pues asignar los elementos correctos. Entonces you tengo mis dos objetos, EditText nombre y EditText correo. Entonces vamos asignar, vamos a traer el contenido de estos elementos a unas variables que sean de tipo string. Vamos a utilizar el método getText.toString. Y lo mismo será para el correo, aquí únicamente cambiamos los parámetros a los parámetros correctos. Ahí está, correo. En estas dos variables you tengo obtenidos el nombre y el correo. Por supuesto algo muy bueno es que puedas ahí validar que los campos no estén vacíos, que tengan algo. Entonces ahora utilizando mi editor, el editor que acabo de crear. Éste que está por acá, yo lo he puesto en modo de edición. Voy a comenzar a insertar los datos. Los voy a insertar con le método put String. Si observaste tenemos varios tipos de puts, o varios tipos de insertar. Ok, entonces yo puedo insertar un dato booleano, o un dato flotante, un dato decimal, un dato entero, un dato entero muy grande, un long. O puedo incluso insertar un set. Una lista de llaves. Recuerda que esto va estar en un modo xml, entonces realmente va ser muy sencillo estar insertando estos elementos y va ser muy sencillo entenderlos. Cuando veamos el resultado del archivo xml. Entonces lo primero, para este ejemplo vamos a insertar un string y el primer parámetro que nos está solicitando es el nombre de la clave, ok. El nombre, recuerda que son parámetros, y en los parámetros siempre vamos a tener el nombre de un parámetro y el valor del parámetro. Algo así como en web. En web siempre tienes cuando utilizas el método get, en web siempre vas a tener el nombre de un parámetro, igual y después viene el nombre del parámetro. Algo así es como vamos a estar trabajando aquí, el nombre de un parámetro. Entonces voy a colocar aquí el nombre, esta anotación también es muy similar como cuando estuvimos trabajando nuestros intents. En nuestros intents también estamos pasando parámetros y de la misma forma es como estamos trabajando también una preferencia compartida. Ok, necesitamos una clave y el valor del parámetro. Listo, you he insertado en el archivo mis dos datos. ¿Ok? Aquí le puse correo. Éste va ser el nombre, o con este dato que está aquí es como puedo accesar al dato que está por acá. Entonces, únicamente, una vez que you inserte ésto, a mi editor le digo que haga un commit. Y listo. Con esto you he insertado los datos. Sería bueno que al igual que en nuestro método de guardar, así como cuando creamos un archivo, sería bueno que también le avisáramos. Se ha creado la Preferencia Compartida. Ok, sería bueno que también le mostremos al usuario un mensaje que la preferencia compartida se ha creado existosamente. Y además también es muy bueno que por aquí, por supuesto, setemos nuestros datos. Ahora con datos vacíos para que pues nuevamente aparezcan disponibles para que nuestro usuario pueda insertar más datos. Listo, you he insertado, you he colocado por aquí, las únicas cosas adicionales. Y listo, con esto you estaría mi método guardar preferencia, ahora vamos a ver cómo es que podemos generar nuestro método mostrar preferencia. Ok, para el método mostrar preferencia, lo que haremos por acá, también necesitamos crear un objeto shared preference. Le vamos a poner también mi preferencia compartida. Aquí por supuesto, podrías utilizar a lo mejor una variable global, dado que esta línea de código, pues realmente es lo mismo, es casi lo mismo de lo que estuvimos trabajando arriba. Entonces aquí viene de nuevo, el nombre del archivo que vamos a estar consultando. Si tú observas, esta línea y la que está por acá pues son exactamente iguales, es exactamente lo mismo que vamos a colocar. Lo que va suceder aquí es que si la preferencia compartida you existe, pues únicamente la va abrir, ajá. Lo que sucede acá es que si preferencia compartida con este nombre no existe, entonces la va a crear. Entonces voy a copiar, voy a hacer un copy paste de nuestra preferencia compartida. Le voy a poner context. MODE_PRIVATE. Ok, de nuevo, voy a necesitar que estas preferencias se estén sobre escribiendo para fines de este ejemplo. Entonces ahora lo que voy hacer, pues voy a declarar unas variables string en donde voy a estar recuperando el valor de la preferencia compartida. Recuerda que, nuestra preferencia compartida la definimos como putString. Entonces, es bueno que de nuevo, recupere la preferencia compartida en una variable, en un objeto de tipo String. Entonces voy a poner mi preferencia compartida. Por aquí se me fue una O mayúscula, le voy a poner minúscula, ajá, acá también. Listo, y ahora le voy a decir .getString. Y lo único que va tener aquí en getString es el valor que le coloqué acá. Deben ser exactamente iguales. Recuerda que una buena práctica de poder estar manejando esto es que, estos datos estén en el archivo Strings. Para que estos datos pues siempre sean los mismos. Ok, y entonces además nos pide un parámetro adicional. El parámetro adicional, como you vimos en el vídeo anterior, es. Si no encuentra una variable que está definida con esta clave, con este nombre de variable, entonces va a devolver lo que esté por acá. Yo puedo decirle que si no encuentra la variable nombre, que esto es solicitado que estoy buscando, pues entonces me diga el texto no existe sa variable. Me ponga ese dato, no existe esa variable. Y lo mismo voy a poder poner para el correo electrónico, voy a poner aquí correo, correo y también el dato que necesito traer es el correo. Entonces, a partir de la preferencia compartida que es este archivo, le estoy solicitando los datos de las variables que se llaman así. Si los datos de las variables de pronto no existen, no hay, no existe una variable definida, o no existe una preferencia compartida que diga nombre en mi archivo. Entonces me va traer el siguiente texto. ¿Ok?. Perfecto. Entonces, lo siguiente, una vez que you tengo las preferencias compartidas en estos objetos de tipo String, nombre y correo, pues lo siguiente será mostrarlo en el text view que había definido ahí. En el text view que había definido ahí en mi interfaz. Entonces le voy a poner aquí TextView Preferencia Compartida. Hago mi casting, TextView, le voy a poner por supuesto findViewById(R.id.) y se llama tv Preferencia Compartida. Entonces, con el método set text, yo puedo estarle dando aquí un formato. Yo puedo estar diciendo, voy a guardar en una variable. Le voy a poner aquí preferencia. Ok, recuerda ésto es nada más para que esté aquí un poquito más resumido. Eso que está aquí, eso es lo que voy a guardar acá. Recuerda que es un string lo que nos pide, entonces aquí tú puedes darle el formato a la preferencia compartida. Y entonces finalmente mostrarla en el texto. Entonces lo que voy a mostrar aquí, primeramente voy a poner un salto de línea. Le voy a poner "nombre:" y voy a estar mostrando el nombre, el nombre de la variable que cacheé por acá. Posteriormente, voy a estar mostrando ahora el correo electrónico, antidiagonal correo. ¿Qué sucede con las antidiagonales? Lo que sucede es que, únicamente la antidiagonal n hace un salto de línea un salto de línea. Si a lo mejor tú quisieras un espacio puedes usar el diagonal t, que es el símbolo para generar un tabulador. Entonces, listo. you está listo aquí, you estamos mostrando la preferencia en el text view, y vamos a correr esto. Vamos a ver cómo funciona todo ésto. Vamos a correrlo en nuestro emulador que lo teníamos por acá guardado. Acá está. Y vamos a dar click a ésto que vemos por aquí. Es importante que también para que observes un poco cómo es que se está dando todo este ejemplo, tengas listo también tu monitor y estés ubicado en la carpeta data data, donde está la carpeta de tu aplicación. Recuerda que nuestra aplicación se llama memoria y la ubico a partir del package. Y entonces vamos a ver que ésto se haya terminado de compilar. Y perfecto. Entonces vamos a poner por acá nuestro monitor y nuestro emular. Entonces le voy a poner nombre de la persona, Anahí Salgado, el correo electrónico personal, y le voy a poner anahi@gmail.com. Y ahora le voy a decir preferencia. Por supuesto este no es mi correo así que no intenten escribir ahí, este no es mi correo. Voy a darle guardar preferencias y se ha creado la preferencia compartida. Y si pusieron atención, de este lado ahora nos ha creado una nueva carpeta donde ha generado nuestro archivo xml de preferencias compartidas. Mis datos personales. Voy a colocar aquí nuestro botoncito de diskette y voy a traer ésto al escritorio, a mis datos personales. Y vamos ahora a abrir ese archivo para ver qué fue lo que se ha creado. Me lo ha colocado en mi otro escritorio. Lo voy abrir ahora lo quiero abrir con sublime text, y en este momento aquí está mi archivo. Esto es lo que ha generado, un archivo xml con la etiqueta padre map. Y a continuación ha generado un string, porque eso fue lo que decidimos generar. El tipo de preferencia que sea put string, un string. Después viene el nombre, ésto es la clave que nosotros asignamos, ésto va ser el nombre. Y dentro de ésto viene ele valor, el dato que insertamos, acá viene mi correo electrónico. Entonces ahora si en nuestra interface, en nuestro emulador, le decimos pues muéstrame la preferencia. Lo que va hacer es que va ir a este archivo, va consultar los datos y finalmente nos va mostrar los datos en el formato que nosotros definimos. Entonces, a partir de las claves de las variables es como está mostrando los datos. Si yo ahora inserto otro nombre, por ejemplo puedo decir Anahí, no sé, Anahí Díaz, y decirle que sea mi correo diaz@gmail.com. Le voy a decir guardar preferencia, al momento de mostrar la preferencia, lo que hace es sobre escribir la preferencia compartida. Recuerda que ésto va de acuerdo al modo de del archivo o al modo en que haz creado la preferencia compartida, en modo private. Por lo tanto siempre está sobre escribiendo el dato. Si pusieras un modo open, entonces estaría concatenando los datos. Muy bien, con ésto you hemos generado nuestra preferencia compartida.