ListPreference & setOnPreferenceChangeListener

B

BFK

Fortgeschrittenes Mitglied
11
Hallo,
habe ein kleines prob.
Habe ein ListPreference mit 2 Optionen, sagen wir "Option A" (hat nen EntryValue = 1) und "Option B" (hat nen EntryValue = 2).
Ich will, dass wenn der Nutzer die Option im ListPreference ändert, etwas passiert.
Mein Code sieht bis jetzt so aus..:
Code:
final ListPreference lp = (ListPreference) getPreferenceManager().findPreference("list_select2");
        

  lp.setOnPreferenceChangeListener(new OnPreferenceChangeListener()
        {

            @Override
            public boolean onPreferenceChange(Preference preference,
                    Object newValue) {
                // TODO Auto-generated method stub
                Log.i("ON-PREFERENCE",lp.getValue()); 
                if(lp.getValue == "1") 
                {
                    // mach was
                 }
               else if(lp.getValue == "2")
               {
                   // mach was anderes
               }
               return true;
            }        
            
            
        });
Mir ist schon klar, dass der Code falsch ist, weil ich ja mit lp.getValue(); den vorrigen Wert bekomme und nicht den, der grad geändert wurde.
Was kann ich machen um den geänderten Wert zu bekommen..?

Mir ist noch aufgefallen, dass die beiden if-blocks nie ausgeführt werden, obwohl schon oft lp.getValue == "1" (oder == "2") stimmt. (Zumindenst bekomme ich nach dem ändern " INFO/ON-PREFERENCE: 2" oder 1 jenachdem im LogCat).
Was mache ich hier falsch..?

Hoffe mein Problem ist verständlich geworden..!

-MFG BFK-
 
deine if abfrage wird sicher nicht stimmen, da man in java strings nicht mit == abfragt

if (lp.getvalue.equals("1")) wirds eher sein
 
  • Danke
Reaktionen: BFK
BFK schrieb:
Mir ist schon klar, dass der Code falsch ist, weil ich ja mit lp.getValue(); den vorrigen Wert bekomme und nicht den, der grad geändert wurde.
Was kann ich machen um den geänderten Wert zu bekommen..?

Das hier:

Code:
    lp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            CharSequence value = (CharSequence) value;
            if (value.equals("1")) {
                // mach was
            } else if (value.equals("2")) {
                // mach was anderes
            }
            return true;
        }        
    });
Da EntryValues in der ListPreference den Typ CharSequence haben, kannst du das einfach casten. Zum Unterschied von == und equals hat swordi ja schon alles gesagt.
 
  • Danke
Reaktionen: BFK
Danke euch beiden..!

Das mit dem equals vergesse ich immer wieder..!

@maniac103
Du meinst wohl..:
Code:
CharSequence value = (CharSequence) newValue;
aber ok hab das ja verstanden..!

-MFG BFK-
 
BFK schrieb:
Danke euch beiden..!

Das mit dem equals vergesse ich immer wieder..!

@maniac103
Du meinst wohl..:
Code:
CharSequence value = (CharSequence) newValue;
aber ok hab das ja verstanden..!
Jo, genau das hab ich gemeint. Sorry for Typo :)
 

Ähnliche Themen

ui_3k1
  • ui_3k1
Antworten
0
Aufrufe
700
ui_3k1
ui_3k1
M
Antworten
2
Aufrufe
1.421
mr.freeze
M
D
Antworten
1
Aufrufe
2.884
Duckemai
D
Zurück
Oben Unten