4

我的偏好活动中有一个加速计模式的列表偏好,我纯粹从 xml 加载。如果用户设备没有或不支持加速度计,我不会完全删除阵列中的项目。我是否必须为此选项创建单独的列表首选项才能将其删除?(我更愿意将它们全部合二为一。)如何使用以下设置将其删除?

谢谢你的提示。

杰森

<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>
4

1 回答 1

5

当您说要“完全删除数组中的项目”时,您的意思是您希望 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"});
    }

这会将您的列表偏好更改为只有这两个选项。

于 2011-04-26T01:17:03.167 回答