我想在我的首选项菜单中有一个执行以下操作的元素:
- 显示选项列表。
- 许多是可选的
- 2. 可供选择的最大数量。
我想到的可能性:
- 将选项分开
PreferenceScreen
并显示为checkBoxes
,但我不知道在哪里放置最大 2 个选项的逻辑。 - 扩展
DialogPreference
并手动完成。
最好的方法是什么?
我想在我的首选项菜单中有一个执行以下操作的元素:
我想到的可能性:
PreferenceScreen
并显示为checkBoxes
,但我不知道在哪里放置最大 2 个选项的逻辑。DialogPreference
并手动完成。最好的方法是什么?
扩展DialogPreference
将使您在外观和感觉方面最接近;根据我的经验,这些Preference
课程相当不灵活且不可扩展。
我不记得太多了PreferenceScreen
,但我想它是相似的。
在我开发的一个应用程序中,我们最终使用了单独的活动,通过Intent
一个Preference
项目 onClick 启动。这使我们能够轻松开发需要比通常更复杂的验证逻辑的偏好屏幕。
您可以将最多两个选项的逻辑放在一个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);
}