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

  • 显示选项列表。
  • 很多都可以选择
  • 2. 最多可选择的选项数量

我想到的可能性:

  1. 做一个分离的 PreferenceScreen 并将选项显示为 checkBoxes, ,但我不知道在哪里放置 max 2 个选项的逻辑。
  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);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top