В моем приложении есть ListPreference, записи которого поступают из сетевого API. В onCreate() моей PreferenceActivity я создаю фоновый поток, который выполняет вызов API, а затем заполняет записи ListPreference через одну или две секунды.
Если пользователь нажимает кнопку ListPreference на экране настроек до загрузки параметров, я хочу предотвратить отображение диалогового окна настроек и вместо этого уведомить пользователя о том, что список параметров все еще загружается.
Я подозреваю, что правильный подход заключается в переопределении OnPreferenceClickListener, например:
ListPreference dpref = (ListPreference) findPreference("debug");
String[] s = {"one", "two", "three"};
dpref.setEntries(s);
dpref.setEntryValues(s);
dpref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Toast.makeText(this, "hi there", Toast.LENGTH_SHORT).show();
return true;
}
});
Отображается всплывающее уведомление, но также отображается диалоговое окно выбора ListPreference. В документации OnPreferenceClickListener говорится, что onPreferenceClick должен возвращать true
, если щелчок был обрабатывается, но возврат false
имеет тот же результат.
Как предотвратить отображение диалогового окна настроек?
Есть ли лучший способ обработки настроек, параметры которых необходимо загрузить перед просмотром?