我在我的偏好活动中有一个加速度计模式列表首选项,我只是从xml加载。如果用户设备没有或不支持Accelerometer,我将不会完全删除阵列中的项目。我是否必须为此一个选项创建单独的列表首选项才能将其删除? (我更愿意将它们整合在一起。)如何通过以下设置删除它?
感谢您的提示。
杰森
<string-array name="mode_text">
<item>Others Modes</item>
<item>Others Modes</item>
<item>Accelerometer Mode</item>
</string-array>
<string-array name="mode_values">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
</resources>
答案 0 :(得分:4)
当您说要“完全删除数组中的项目”时,您是否希望ListPreference不显示在PreferenceScreen中?或者您希望它在尝试获取设定值时返回空值?
好的,我现在明白了。我认为你不能只删除数组中的那个项目。您必须以编程方式为ListPreference的条目和entryValues设置新数组。 您可以通过其键找到ListPreference。
以下是一个例子:
if (accelerometerNotSupported) {
ListPreference accelMode = (ListPreference) findPreference("acceleratorMode");
accelMode.setEntries(new String[]{"Others Modes","Others Modes"});
accelMode.setEntryValues(new String[]{"0", "1"});
}
这会将您的列表首选项更改为仅包含这两个选项。