ListPreference 具有最大数量的可选选项
-
19-09-2019 - |
题
我希望在我的首选项菜单中有一个执行以下操作的元素:
- 显示选项列表。
- 很多都可以选择
- 2. 最多可选择的选项数量
我想到的可能性:
- 做一个分离的
PreferenceScreen
并将选项显示为checkBoxes
, ,但我不知道在哪里放置 max 2 个选项的逻辑。 - 延伸
DialogPreference
并手工完成。
最好的办法是什么?
解决方案
延伸 DialogPreference
会让您在外观和感觉上最接近;这 Preference
根据我的经验,课程相当不灵活且不可扩展。
我不记得太多了 PreferenceScreen
, ,但我想它是相似的。
在我开发的一个应用程序中,我们最终使用了单独的活动,通过以下方式启动 Intent
从一个 Preference
单击项目。这使我们能够轻松开发需要比平常更复杂的验证逻辑的偏好屏幕。
其他提示
您可以将最多两个选项的逻辑放在一个 OnSharedPreferenceChangeListener
.
因此,您只需监听所有首选项的更改,并在选择无效组合时更新它们。
所以你的代码将类似于以下内容:
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {
//Code to calcuate how many are selected
int code = numberSelected();
if (count > 2) {
sharedPreferences.edit().putBoolean(key,false).commit();
Toast.makeText(this,"Can't select more than two!",Toast.LENGTH_LONG).show();
}
}
如果您创建自己的 PreferenceActivity
实现 OnSharedPreferenceChangeListener
您可以使侦听器仅在需要时才进行侦听,执行如下操作:
@Override
protected void onResume() {
super.onResume();
//Register the listener
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
// Unregister the listener
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
不隶属于 StackOverflow