Autore Topic: Gestione SharedPreferences  (Letto 408 volte)

Offline felasandroid

  • Utente normale
  • ***
  • Post: 345
  • Respect: +10
    • Github
    • balduzziantonio
    • balduzziantonio.unifi
    • Mostra profilo
  • Dispositivo Android:
    Huawei P8 Lite
  • Play Store ID:
    FelasTech
  • Sistema operativo:
    Windows 10
Gestione SharedPreferences
« il: 04 Dicembre 2014, 13:13:27 CET »
0
Ho creato in automatico la classe

Codice (Java): [Seleziona]
public class SettingsActivity extends PreferenceActivity

Ora nell'activity main sto cercando di fare un get di una preferenza checkbox(quindi true o false), di default è true.

in onCreate() eseguo:

Codice (Java): [Seleziona]
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
 Boolean check = sharedPreferences.getBoolean("autenticazione", false);

ma mi prende sempre false come valore come mai? sto facendo bene?

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Gestione SharedPreferences
« Risposta #1 il: 04 Dicembre 2014, 13:14:52 CET »
0
Il secondo parametro di getXXX è il valore di default nel caso in cui la chiave non sia presente.
Se non hai scritto alcun valore, ti riporterà quindi false.  :-)

Offline felasandroid

  • Utente normale
  • ***
  • Post: 345
  • Respect: +10
    • Github
    • balduzziantonio
    • balduzziantonio.unifi
    • Mostra profilo
  • Dispositivo Android:
    Huawei P8 Lite
  • Play Store ID:
    FelasTech
  • Sistema operativo:
    Windows 10
Re:Gestione SharedPreferences
« Risposta #2 il: 04 Dicembre 2014, 14:00:16 CET »
0
Il secondo parametro di getXXX è il valore di default nel caso in cui la chiave non sia presente.
Se non hai scritto alcun valore, ti riporterà quindi false.  :-)

il problema è che il valore di default c'è ed è true..

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Gestione SharedPreferences
« Risposta #3 il: 04 Dicembre 2014, 14:35:16 CET »
0
Verifica dopo aver preso l'oggetto editor dalle preferences e aver fatto la setboolean di fare anche commit() o apply()

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Gestione SharedPreferences
« Risposta #4 il: 04 Dicembre 2014, 15:54:07 CET »
0
il problema è che il valore di default c'è ed è true..

A quanto pare non è così. Le possibili complicazioni possono essere: il valore non esiste nelle SharedPreferences, la chiave che usi non è quella corretta, sono altre SharedPreferences.
I numeri contano molto di più del seme.

Offline felasandroid

  • Utente normale
  • ***
  • Post: 345
  • Respect: +10
    • Github
    • balduzziantonio
    • balduzziantonio.unifi
    • Mostra profilo
  • Dispositivo Android:
    Huawei P8 Lite
  • Play Store ID:
    FelasTech
  • Sistema operativo:
    Windows 10
Re:Gestione SharedPreferences
« Risposta #5 il: 04 Dicembre 2014, 20:34:17 CET »
0
Io ho creato dal modello di Android Studio la classe settingsActivity:

Codice (Java): [Seleziona]
public class SettingsActivity extends PreferenceActivity {
    /**
     * Determines whether to always show the simplified settings UI, where
     * settings are presented in a single list. When false, settings are shown
     * as a master/detail two-pane view on tablets. When true, a single pane is
     * shown on tablets.
     */

    private static final boolean ALWAYS_SIMPLE_PREFS = false;


    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);

        setupSimplePreferencesScreen();
    }

    /**
     * Shows the simplified settings UI if the device configuration if the
     * device configuration dictates that a simplified, single-pane UI should be
     * shown.
     */

    private void setupSimplePreferencesScreen() {
        if (!isSimplePreferences(this)) {
            return;
        }

        // In the simplified UI, fragments are not used at all and we instead
        // use the older PreferenceActivity APIs.

        // Add 'general' preferences.
        addPreferencesFromResource(R.xml.pref_general);

        // Add 'notifications' preferences, and a corresponding header.
        PreferenceCategory fakeHeader = new PreferenceCategory(this);
        fakeHeader.setTitle(R.string.pref_header_notifications);
        getPreferenceScreen().addPreference(fakeHeader);
        addPreferencesFromResource(R.xml.pref_notification);

        // Add 'data and sync' preferences, and a corresponding header.
        fakeHeader = new PreferenceCategory(this);
        fakeHeader.setTitle(R.string.pref_header_autenticazione);
        getPreferenceScreen().addPreference(fakeHeader);
        addPreferencesFromResource(R.xml.pref_autenticazione);

        // Bind the summaries of EditText/List/Dialog/Ringtone preferences to
        // their values. When their values change, their summaries are updated
        // to reflect the new value, per the Android Design guidelines.
        bindPreferenceSummaryToValue(findPreference("example_text"));
        bindPreferenceSummaryToValue(findPreference("example_list"));
        bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone"));
        bindPreferenceSummaryToValue(findPreference("durata_sessione"));
    }

poi il codice continua..ma mi merita farlo da me senza prendere il modello? perchè questa chiave c'è ed è true