Autore Topic: PreferenceActivity EditTextPreference che comunica con ListPreference  (Letto 742 volte)

Offline Sirio22

  • Utente junior
  • **
  • Post: 93
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7/8.1
Allora ragazzi ormai mi sto impallando con questa Activity e ne devo venire a capo! :-)
Son all'interno di una PreferenceActivity e voglio aggiungere dei valori ad una ListPreference mandandoli da EditTextPreference
Ho provato così

Codice (Java): [Seleziona]
        EditTextPreference editText = (EditTextPreference) findPreference("editTextPref");
                editText.setOnPreferenceClickListener(new OnPreferenceClickListener() {

                        public boolean onPreferenceClick(Preference preference) {


                                //aggiorno i dati delle impostazioni quando sono modificate le preferences
                                SharedPreferences prefs = PreferenceManager
                                .getDefaultSharedPreferences(getBaseContext());                                          

                                editTextPreference = prefs.getString("editTextPref",
                                "Nothing has been entered");
                               
                                aggiungiEntry(editTextPreference);

                                return true;
                        }

                });
il metodo aggiungiEntry invece è il seguente

Codice (Java): [Seleziona]
       
                if(!db.containsPosizione(s))
                db.insertPosizioneSetting(s);
               

//svuoto la lista per evitare i doppioni
                lista.setEntries(new CharSequence[0]);
                lista.setEntryValues(new CharSequence[0]);
               
                Cursor c=db.fetchPosizioni();
                c.moveToFirst();
                                while(!c.isAfterLast()){
                                       
                                        chiavi.add(c.getString(c.getColumnIndex("via")));
                                        valori.add(c.getString(c.getColumnIndex("via")));
                               
                                        c.moveToNext();
                                }
                               
                               
                                lista.setEntries((CharSequence[]) chiavi.toArray(new CharSequence[chiavi.size()]));
                                lista.setEntryValues((CharSequence[]) valori.toArray(new CharSequence[valori.size()]));
                               
        }
               
               

quello che accade è:
quando entro nella schermata di impostazioni e clicco sulla listPreference allora va alla grande fetcha tutti i valori del db e ok
quando inserisco un elemento tramite editTextPreference ed esco e rientro dall'activity allora lo aggiunge e va bene
ma se inserisco l'elemento e senza uscire dall'activity vado sulla lista me la sballa completamente raddoppiando i valori

 o_O salvatemi!
Let Your Brain Run Away

Offline Sirio22

  • Utente junior
  • **
  • Post: 93
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7/8.1
Re:PreferenceActivity EditTextPreference che comunica con ListPreference
« Risposta #1 il: 14 Dicembre 2010, 10:00:31 CET »
0
Sono stato poco chiaro mi sa  :-o
Let Your Brain Run Away

Offline Sirio22

  • Utente junior
  • **
  • Post: 93
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7/8.1
Re:PreferenceActivity EditTextPreference che comunica con ListPreference
« Risposta #2 il: 14 Dicembre 2010, 23:22:09 CET »
0
ho risolto.
se vi dovesse servire compiere un'azione quando si preme Ok all'interno di una EditTextPreference va implementato il metodo OnPreferenceChangeListener

Codice (Java): [Seleziona]
editText = (EditTextPreference) findPreference("editTextPref");

                        editText.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {


                        public boolean onPreferenceChange(Preference arg0, Object arg1) {

topic risolto ... credo  :-\
Let Your Brain Run Away