0

我想在我的首选项菜单中有一个执行以下操作的元素:

  • 显示选项列表。
  • 许多是可选的
  • 2. 可供选择的最大数量。

我想到的可能性:

  1. 将选项分开PreferenceScreen并显示为checkBoxes,但我不知道在哪里放置最大 2 个选项的逻辑。
  2. 扩展DialogPreference并手动完成。

最好的方法是什么?

4

2 回答 2

3

扩展DialogPreference将使您在外观和感觉方面最接近;根据我的经验,这些Preference课程相当不灵活且不可扩展。

我不记得太多了PreferenceScreen,但我想它是相似的。

在我开发的一个应用程序中,我们最终使用了单独的活动,通过Intent一个Preference项目 onClick 启动。这使我们能够轻松开发需要比通常更复杂的验证逻辑的偏好屏幕。

于 2010-01-06T15:37:46.153 回答
2

您可以将最多两个选项的逻辑放在一个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);
}
于 2010-01-06T16:16:51.753 回答