Skip to content
Android Blog Italia

Android Blog Italia

Tutto quello che devi sapere sul mondo Android e della tecnologia

Primary Menu
  • News
    • Visualizza Tutto
    • Smartphone
    • Tablet
    • Accessori
    • TUTTI GLI ARTICOLI
  • Guide
    • Visualizza Tutto
    • ProgrammazioneGuide di programmazione
  • Recensioni
    • Visualizza TuttoCategoria relativa alle recesioni dedicate a smartphone, tablet, pc e dispositivi legati al mondo della Tecnologia.
  • Applicazioni
    • Visualizza tutto
  • Giochi
    • Visualizza Tutto
  • Guide e tutorial per Android
  • Programmazione

Programmazione Avanzata: Lezione 3 – SharedPreferences

Redazione 27/04/2014

PA 3Oggi parleremo di come mantenere la persistenza di alcuni dati (come ad esempio le impostazioni e i settaggi utente) anche dopo la chiusura dell’applicazione, utilizzando la classe SharedPreferences.

[divider]

Spesso è necessario mantenere alcuni dati fra una sessione di utilizzo e un’altra. In questa lezione vedremo una semplice applicazione che memorizza il nome utente di una persona, ma con lo stesso sistema possiamo memorizzare molti altri tipi di dato a cui vogliamo accedere in seguito, anche dopo lo spegnimento del terminale.
[box type=”warning” align=”aligncenter” ]ATTENZIONE! In seguito utilizzeremo un codice senza l’inserimento e la gestione dei fragment. Poichè le nuove versioni di Eclipse alla creazione di un nuovo progetto genereranno automaticamente dei file, cancellateli e/o modificateli in modo da ottenere la stessa struttura dell’applicazione presentata (più semplice e adatta per scopi didattici).[/box]

Come sempre creiamo un nuovo progetto android, noi l’abbiamo chiamato SharedPreferencesExample. Per prima cosa creiamo 2 layout, uno verrà utilizzato solo se non abbiamo mai fatto il login, l’altro tutte le altre volte che apriamo l’applicazione.
Creiamo quindi i file activity_main.xml e activity_main2.xml

Nel primo inseriamo il codice seguente:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="Benvenuto!\nInserisci il tuo nome"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/nome"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="80dp"
        android:ems="10"
        android:inputType="textPersonName" />

    <Button
        android:id="@+id/login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/nome"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp"
        android:text="Login" />

</RelativeLayout>

Nel secondo invece inseriamo quest’altro codice:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="Bentornato"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/nome_salvato"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="25dp"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

Il due layout dovrebbero apparire quindi così:

due_layout

Come vedete il layout è molto semplice e non presenta nulla di nuovo rispetto a quello visto nella guida base.
Passiamo ora alla parte relativa al codice Java, dove utilizzeremo la classe SharedPreferences.

Apriamo quindi il file MainActivity.java e modifichiamolo come segue:

package com.example.sharedpreferencesexample;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.sharedpreferencesexample.R;

public class MainActivity extends Activity {

	SharedPreferences sp;
	Button login;
	EditText edit;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		sp = this.getSharedPreferences(
				"my_pref", Context.MODE_PRIVATE);
		/*Andiamo a controllare il campo "never_login", se questo non è mai stato modificato 
		 * otteniamo il valore di default (nel nostro caso impostato a "true").
		 */
		boolean isFirstTime = sp.getBoolean("never_login", true);
		if(isFirstTime){
			//Carichiamo il primo layout
			setContentView(R.layout.activity_main);
			edit = (EditText) findViewById(R.id.nome);
			login = (Button) findViewById(R.id.login);
			login.setOnClickListener(new OnClickListener(){

				@Override
				public void onClick(View v) {
					//Andiamo ad effettuare il login
					effettuaLogin();
				}

			});
		}
		else{
			//Non è la prima volta, carichiamo l'altro layout
			setContentView(R.layout.activity_main2);
			//prendiamo il nome salvato l'altra volta
			String nome_utente = sp.getString("nome_utente", "");
			TextView nome_salvato = (TextView) findViewById(R.id.nome_salvato);
			nome_salvato.setText(nome_utente);
		}

	}

	private void effettuaLogin(){
		//Andiamo a prendere il nome
		String nome = edit.getText().toString();
		//Controlliamo che sia stato inserito un nome
		if(nome==null || nome.length()==0){
			//non è stato inserito nulla
			Toast.makeText(MainActivity.this, "Inserisci il nome", Toast.LENGTH_SHORT).show();
			return;
		}

		//salviamo le informazioni per la prossima volta

		Editor editor = sp.edit();//Prendiamo l'editor
		editor.putBoolean("never_login", false);
		editor.putString("nome_utente", nome);
		editor.commit();//salviamo le modifiche
		//Notifichiamo che tutto è andato bene
		Toast.makeText(MainActivity.this, "Login effettuato!", Toast.LENGTH_SHORT).show();
	}
}

Andiamo ad esaminare il codice. All’inizio della onCreate() otteniamo tramite il metodo getSharedPreferences() un oggetto di tipo SharedPreferences relativo alla nostra activity, che possiamo vedere come un contenitore di dati. Da qui tramite i vari metodi get otteniamo i valori salvati, passando a questi metodi il nome (che funge qui da ID) della variabile salvata, o il valore di default se questa non è stata (ancora) salvata. Tramite l’oggetto Editor invece andiamo a inserire i vari dati, passando ai vari metodi put il nome identificativo e il valore da salvare.

Abbiamo quindi visto una semplice applicazione, di cui vi lasciamo il progetto completo da scaricare qui.

[box type=”info” align=”aligncenter”]Per importare un progetto estraete la cartella dove preferite (meglio se nel workspace) poi da Eclipse File -> Import -> Existing Android Code Into Workspace e tramite “Browse” andate a cercarvi il progetto. Se è già nel workspace, levate la spunta a “copy project into workspace”[/box]
Possiamo naturalmente sfruttare questa lezione come base per applicazioni ben più complesse.

Per le altre lezioni visualizza l’indice del corso di programmazione avanzata.

Continue Reading

Previous: Guida Programmazione Avanzata Android – Indice
Next: Ecco come impostare un Mp3 come suoneria su Android

Articoli Correlati

Come disattivare il GPS dello smartphone Come funziona il GPS
  • Guide e tutorial per Android
  • News su Android, tutte le novità
  • Sticky

Come disattivare il GPS dello smartphone

12/09/2023
Top 5 motivi per cui Cammus C5 è migliore della concorrenza Top 5 motivi per acquistare Cammus C5
  • Guide e tutorial per Android
  • News su Android, tutte le novità

Top 5 motivi per cui Cammus C5 è migliore della concorrenza

11/09/2023
Come personalizzare il setup di Cammus C5 Come personalizzare il setup di Cammus C5
  • Guide e tutorial per Android
  • News su Android, tutte le novità

Come personalizzare il setup di Cammus C5

01/09/2023

Ultime News

Questo è il Google Pixel 8a Google Pixel 8a leaked
  • News su Android, tutte le novità
  • Smartphone Android

Questo è il Google Pixel 8a

Redazione 25/09/2023
Nel tipico stile di Google, il Pixel 8a, il cui lancio è previsto per il 2024, è...
Leggi tutto
Spotify Supremium con qualità Hi-Fi, ormai ci siamo quasi Spotify Supremium

Spotify Supremium con qualità Hi-Fi, ormai ci siamo quasi

25/09/2023
Google rende disponibile lo “Studio Bot AI” in 170 paesi ma non ancora in UE Google Studio Bot IA

Google rende disponibile lo “Studio Bot AI” in 170 paesi ma non ancora in UE

24/09/2023
Google e messaggi RCS: nuova frecciatina ad Apple sul mancato supporto Google pubblicità sarcastica Apple no RCS

Google e messaggi RCS: nuova frecciatina ad Apple sul mancato supporto

24/09/2023
Signal aggiorna il suo protocollo crittografico per metterlo al riparo dai computer quantistici Signal SMS

Signal aggiorna il suo protocollo crittografico per metterlo al riparo dai computer quantistici

23/09/2023
Copyright © Tutti i diritti riservati | MoreNews by AF themes.
×

Questo sito utilizza i cookie, anche di terze parti, per garantirvi una esperienza di utilizzo ottimale.
Si rinvia all'informativa estesa per ulteriori informazioni. La prosecuzione nella navigazione (click, scroll, ...) comporta l'accettazione dei cookie.

 

Ok