2012-12-02 10 views
9

Ich habe eine Voreinstellung Aktivität in meinem Code. Ich möchte einen Toast zeigen, wenn Benutzer Radio Optionsfeld in einer Listpreferences ändern. Ich habe diesen Code verwendet, aber es funktioniert nicht. :(onPreferenceChange-Methode wird nicht aufgerufen, wenn Listpreferences sich ändert

public class PrefsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener{ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
addPreferencesFromResource(R.xml.prefs); 
} 
public void onSharedPreferenceChanged(SharedPreferences arg0, String key) { 

ListPreference listPreference = (ListPreference) findPreference(key); 
listPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 

    @Override 
    public boolean onPreferenceChange(Preference preference, Object newValue) { 
     // TODO Auto-generated method stub 
     Toast.makeText(PrefsActivity.this, "second", Toast.LENGTH_LONG).show(); 
     return false; 
    } 
}); 
} 
} 

was ist mein Problem

+4

Sie sollten diese neuen Informationen bearbeiten in Ihre bestehende Frage ein: [Zeigen Sie einen Toast, wenn die Benutzereinstellung in den Einstellungen geändert wird] (http://Stackoverflow.com/q/13665409/1267661), anstatt ein neue Frage. Bitte lesen Sie die [FAQ] über akzeptable Wege, um mehr Aufmerksamkeit auf Ihre Fragen zu bekommen. – Sam

+0

@Reza_rg: Sie haben versucht "Log.V (" ListPreference "," onPreferenceChange ");' zu sehen, ob onPreferenceChange in logcat aufgerufen wird oder nicht? –

+0

@imrankhan Ich habe es jetzt versucht, und es scheint onPreferenceChange nicht aufgerufen zu werden. was sollte ich jetzt tun? –

Antwort

16

ändern onCreate Code:.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.prefs); 

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    prefs.registerOnSharedPreferenceChangeListener(this); 
} 

Sie sind die registerOnSharedPreferenceChangeListener zu PrefsActivity Aktivität nicht das Hinzufügen

+0

hast du es versucht? –

+0

Ja! Das war mein Fehler, Danke. :) –

+0

jetzt habe ich ein anderes Problem. :(Wenn ich auf einen der Radioknöpfe in den Listenvorschlägen klicke, es toast, was ich will, aber es wird nicht Wert in Listenpräferenzen aktualisieren. –

Verwandte Themen