Android 从ListPreference中删除数组项

Android 从ListPreference中删除数组项,android,accelerometer,listpreference,Android,Accelerometer,Listpreference,在我的首选项活动中,我有一个加速计模式的列表首选项,我完全是从xml加载的。如果用户的设备没有或不支持加速计,我不会完全删除阵列中的项目。我是否必须为这一选项创建单独的列表首选项才能删除它?(我更愿意把它们都放在一起。)如何用下面的设置删除它 谢谢你的提示 杰森 其他模式 其他模式 加速度计模式 0 1. 2. 当您说要“完全删除数组中的项目”时,您的意思是希望ListPreference不显示在PreferenceScreen中吗?或者,当您尝试获取设置值时,希望它返回空值 好吧,我现在明白

在我的首选项活动中,我有一个加速计模式的列表首选项,我完全是从xml加载的。如果用户的设备没有或不支持加速计,我不会完全删除阵列中的项目。我是否必须为这一选项创建单独的列表首选项才能删除它?(我更愿意把它们都放在一起。)如何用下面的设置删除它

谢谢你的提示

杰森


其他模式
其他模式
加速度计模式
0
1.
2.
当您说要“完全删除数组中的项目”时,您的意思是希望ListPreference不显示在PreferenceScreen中吗?或者,当您尝试获取设置值时,希望它返回空值

好吧,我现在明白了。我想你不能只删除数组中的那个项目。您必须以编程方式为ListPreference的条目和入口值设置新数组。 您可以通过其键找到ListPreference

以下是一个例子:

    if (accelerometerNotSupported) {
        ListPreference accelMode = (ListPreference) findPreference("acceleratorMode");
        accelMode.setEntries(new String[]{"Others Modes","Others Modes"});
        accelMode.setEntryValues(new String[]{"0", "1"});
    }

这将更改您的列表首选项,使其仅具有这两个选项。

No个人列表首选项输入模式。不是全部偏好,因为其他模式将适用于选择,所以其他模式仍然需要显示为“其他模式”等。是的,我刚才看到了。我明白了,让我想想你怎么解决这个问题。在尝试了几个小时的其他事情后,终于找到了答案。考虑到乍一看这个问题是多么普遍,谷歌很难解决这个问题
    if (accelerometerNotSupported) {
        ListPreference accelMode = (ListPreference) findPreference("acceleratorMode");
        accelMode.setEntries(new String[]{"Others Modes","Others Modes"});
        accelMode.setEntryValues(new String[]{"0", "1"});
    }