Autore Topic: SharedPreferenceChangedListener  (Letto 1239 volte)

Offline xwilly84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Orange Mobile
  • Sistema operativo:
    Win 7 x64
SharedPreferenceChangedListener
« il: 12 Luglio 2012, 19:21:35 CEST »
0
In oncreate ho messo il seguente codice

Codice (Java): [Seleziona]
prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);

ho implementato

Codice (Java): [Seleziona]
implements OnSharedPreferenceChangeListener
e creato il metodo

Codice (Java): [Seleziona]
public void onSharedPreferenceChanged(SharedPreferences sharedPrefs, String key) {
                       
       
}


ho creato preferences.xml

Codice (Java): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory
        android:title="Grafica"
        android:key="grafica">
       
       
       <ListPreference
                        android:title="Cambia Sfondo"
                        android:summary="Cambia sfondo"
                        android:key="sfondo"
                        android:entries="@array/sfondo_list"
                        android:entryValues="@array/sfondo_list_return"
                        android:defaultValue="Default" />
       
        <ListPreference
                        android:title="Grandezza Testo"
                        android:summary="Cambia grandezza testo"
                        android:key="size"
                        android:entries="@array/size_list"
                        android:entryValues="@array/size_list_return"
                        android:defaultValue="Normale"/>
       
       

         
           
    </PreferenceCategory>
</PreferenceScreen>

in array.xml

Codice (Java): [Seleziona]
 <string-array name="sfondo_list">
                <item>Default</item>
                <item>Chiaro</item>
                <item>Scuro</item>
                <item>Arancio</item>
    </string-array>

        <string-array name="sfondo_list_return">
                <item>Default</item>
                <item>Chiaro</item>
                <item>Scuro</item>
                <item>Arancio</item>
        </string-array>
       
       
       
       
        <string-array name="size_list">
                <item>Normale</item>
                <item>Medio</item>
                <item>Grande</item>
        </string-array>

        <string-array name="size_list_return">
                <item>Normale</item>
                <item>Medio</item>
                <item>Grande</item>
        </string-array>
 


ed infine la classe EditPreferences

Codice (Java): [Seleziona]
public class EditPreferences extends PreferenceActivity  {
       
       
        @SuppressWarnings("deprecation")
        @Override
        public void onCreate(Bundle savedInstanceState) {
        setTheme(android.R.style.Theme_Black_NoTitleBar_Fullscreen);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
       
       
       
       
       
       
       
}

}


Vorrei sapere come posso cambiare colore e grandezza testo attraverso onSharedPreferenceChanged......

grazie in anticipo! :D



« Ultima modifica: 13 Luglio 2012, 19:38:04 CEST da xwilly84 »

Offline xwilly84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Orange Mobile
  • Sistema operativo:
    Win 7 x64
Re:Come usare SharedPreferenceChanged
« Risposta #1 il: 13 Luglio 2012, 18:25:55 CEST »
0
Per adesso ho risolto in questo modo.....funziona, nel senso che quando seleziono per esempio cambia sfondo...lo sfondo cambia in base a ciò che scelgo.
la selezione resta salvata al momento che chiudo l'applicazione ma....non resta salvato il colore...questo è il codice aggiornato


In onCreate
Codice (Java): [Seleziona]
prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(prefListener);


Codice (Java): [Seleziona]
private SharedPreferences.OnSharedPreferenceChangeListener prefListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
                public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
                               
                       
                               
                                        if (key.equals("sfondo")){
                                       
                                    if(prefs.getString("sfondo", "").equals("Default")){
                                                Toast.makeText(StartActivity.this, "Default", Toast.LENGTH_SHORT).show();
                                                risultato.setText("Default");
                                                risultato.setBackgroundColor(Color.YELLOW);
                                        }else if (prefs.getString("sfondo", "").equals("Chiaro")){
                                                Toast.makeText(StartActivity.this, "Chiaro", Toast.LENGTH_SHORT).show();
                                                risultato.setText("Chiaro");
                                                risultato.setBackgroundColor(Color.LTGRAY);
                                    }else if (prefs.getString("sfondo", "").equals("Scuro")){
                                                Toast.makeText(StartActivity.this, "Scuro", Toast.LENGTH_SHORT).show();
                                                risultato.setText("Scuro");
                                                risultato.setBackgroundColor(Color.CYAN);
                                        }else if (prefs.getString("sfondo", "").equals("Arancio")){
                                                Toast.makeText(StartActivity.this, "Arancio", Toast.LENGTH_SHORT).show();      
                                                risultato.setText("Arancio");
                                                risultato.setBackgroundColor(Color.MAGENTA);
                                        }      
                                       
                                }else if (key.equals("size")){ 
                                               
                                        if (prefs.getString("size", "").equals("Normale")){
                                                Toast.makeText(StartActivity.this, "Normale", Toast.LENGTH_SHORT).show();
                                        }else if (prefs.getString("size", "").equals("Medio")){
                                                Toast.makeText(StartActivity.this, "Medio", Toast.LENGTH_SHORT).show();
                                        }else if (prefs.getString("size", "").equals("Grande")){
                                                Toast.makeText(StartActivity.this, "Grande", Toast.LENGTH_SHORT).show();
                                        }
                                       
                               
                                       
                                }
                        };

Vi prego! :-(
Ogni volta che chiudo l'applicazione non mi riporta il cambiamento.....

Grazie in anticipo e buon lavoro!

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:SharedPreferenceChangedListener
« Risposta #2 il: 14 Luglio 2012, 18:53:13 CEST »
0
Il listener OnSharedPreferenceChangeListener serve ad effettuare azioni quando vengono modificate le preferenze.
In questo momento tu imposti lo sfondo solo quando vengono cambiate le preferenze corrispondenti.
Lo devi cambiare anche quando apri l'app.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline xwilly84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Orange Mobile
  • Sistema operativo:
    Win 7 x64
Re:SharedPreferenceChangedListener
« Risposta #3 il: 14 Luglio 2012, 21:02:41 CEST »
0
A ok...adesso capisco, quindi devo creare un metodo in onresume che in base alla modifica del listener .......ok quindi sharedpreferenceslistener ascolta solo la chiamata......ok grazie blackgin
A Un altra cosa sempre per salvare....io ho un databasee che popola una listview c'e un modo per poter salvare i valori della mia tabella del data ade in un file csv scegliendo io il percorso facendo creare una cartella nella sd va bene anche txt grazie di nuovo  ???

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:SharedPreferenceChangedListener
« Risposta #4 il: 15 Luglio 2012, 21:33:07 CEST »
0
A ok...adesso capisco, quindi devo creare un metodo in onresume che in base alla modifica del listener .......ok quindi sharedpreferenceslistener ascolta solo la chiamata......ok grazie blackgin
A Un altra cosa sempre per salvare....io ho un databasee che popola una listview c'e un modo per poter salvare i valori della mia tabella del data ade in un file csv scegliendo io il percorso facendo creare una cartella nella sd va bene anche txt grazie di nuovo  ???
La creazione della cartella devi implementarla manualmente, non c'é un selettore di file di default.
Per quanto riguarda l'esportazione in csv puoi seguire qualsiasi tutorial per java https://www.google.it/search?q=export+csv+java
Postate il LogCat LogCat LogCat LogCat LogCat

Offline xwilly84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Orange Mobile
  • Sistema operativo:
    Win 7 x64
Re:SharedPreferenceChangedListener
« Risposta #5 il: 15 Luglio 2012, 22:48:01 CEST »
0
Grazie molto gentile seguirò questo link...cmq prima di segnare come topic risolto scriverò il codice per quando riguarda la gestione delle preferenze per chi magari ha dei dubbi