1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

ListPreference & setOnPreferenceChangeListener

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von BFK, 04.04.2011.

  1. BFK, 04.04.2011 #1
    BFK

    BFK Threadstarter Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    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-
     
  2. swordi, 05.04.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    deine if abfrage wird sicher nicht stimmen, da man in java strings nicht mit == abfragt

    if (lp.getvalue.equals("1")) wirds eher sein
     
    BFK bedankt sich.
  3. maniac103, 05.04.2011 #3
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    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.
     
    BFK bedankt sich.
  4. BFK, 06.04.2011 #4
    BFK

    BFK Threadstarter Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    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-
     
  5. maniac103, 06.04.2011 #5
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Jo, genau das hab ich gemeint. Sorry for Typo :)
     

Diese Seite empfehlen