我希望在我的偏好设置菜单中有一个元素可以执行以下操作:
我想到的可能性:
PreferenceScreen
并将选项显示为checkBoxes
,但我不知道在哪里放置最多2个选项的逻辑。DialogPreference
并手动完成。最好的方法是什么?
答案 0 :(得分:3)
扩展DialogPreference
会让你在外观和感觉上最接近;根据我的经验,Preference
课程相当不灵活且不可扩展。
我对PreferenceScreen
的记忆太过分了,但我认为它类似。
在我工作的应用中,我们最终使用单独的活动,通过Intent
项目从Preference
启动。这使我们能够轻松开发需要验证逻辑的偏好屏幕,这比通常情况要复杂一些。
答案 1 :(得分:1)
您可以将最多两个选项的逻辑放在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);
}