【发布时间】:2011-01-12 00:25:10
【问题描述】:
我的应用有一个 ListPreference,其条目来自网络 API。在我的 PreferenceActivity 的 onCreate() 中,我生成了一个后台线程,它进行 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;
}
});
toast 会显示,但 ListPreference 选择器对话框也会显示。 OnPreferenceClickListener documentation 表示 onPreferenceClick 应该返回 true 如果点击被处理,但返回 false 具有相同的结果。
如何防止显示首选项对话框?
有没有更好的方法来处理必须先下载选项才能查看的首选项?
【问题讨论】:
标签: android android-preferences