У меня есть ListPreference в системе настроек для моего приложения для Android, чтобы пользователь мог выбирать из одного из 5 различных учетных записей данных. В настройках они должны иметь возможность переключаться между учетными записями, которые они хотят использовать в настоящее время. Проблема, однако, в том, что когда я нажимаю на один из вариантов, я получаю выбор от до , когда список был открыт. Код следующий:
// Get the Account Preferences pointer
final ListPreference accountPref = (ListPreference) findPreference("accountPref");
CharSequence[] entries = { "Account 1", "Account 2", "Account 3", "Account 4", "Account 5" };
CharSequence[] entryValues = { "1", "2", "3", "4", "5" };
accountPref.setEntries(entries);
accountPref.setEntryValues(entryValues);
accountPref.setDefaultValue("1");
accountPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
Log.i("theApp", "Selected = " + accountPref.getValue());
return true;
}
});
Поэтому, если я выберу третью запись в диалоговом окне, журнал вернет «1». Если я выберу 5-й, он вернет «3». Кажется, он возвращает выбор до нового выбора. Как мне получить текущий выбор, а не последний?