2012-12-02 15 views
9

Mam działanie Preferences w moim kodzie. Chcę pokazać toast, gdy kiedykolwiek użytkownik zmieni przycisk opcji Listpreferences. Użyłem tego kodu, ale dawka nie działa. :(Metoda onPreferenceChange nie jest wywoływana, gdy zmienia się Listpreferences

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; 
    } 
}); 
} 
} 

co jest moim problemem

+4

Należy edytować nowe informacje do istniejącego pytania: [Pokaż tosty, gdy użytkownik zmienia ustawienie w aktywności preferencji] (http://stackoverflow.com/q/13665409/1267661), zamiast tworzyć nowe pytanie. Zapoznaj się z [FAQ] na temat możliwych sposobów zwrócenia większej uwagi na swoje pytania. – Sam

+0

@Reza_rg: masz spróbować'Log.v ("ListPreference", "onPreferenceChange"); ', aby zobaczyć OnPreferenceChange jest wywoływana lub nie w logcat? –

+0

@imrankhan Próbowałem go teraz i wydaje mi się, że nie można wywołać w PreferencjiChange. co mam teraz zrobić? –

Odpowiedz

16

Zmień swój kod onCreate do:?.

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

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

Nie dodajesz registerOnSharedPreferenceChangeListener do PrefsActivity Aktywny

+0

spróbuj tego? –

+0

Tak! To był mój błąd, dziękuję. :) –

+0

teraz, mam inny problem. :(kiedy klikam na jeden z przycisków radiowych w listpreferences, to wznosi to, co chcę, ale nie dawka nie aktualizuje wartości w listpreferences –

Powiązane problemy