android - 从 ListPreference 中删除数组项

标签 android accelerometer listpreference

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

感谢您的提示。

杰森

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

最佳答案

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

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

关于android - 从 ListPreference 中删除数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5782766/

相关文章:

android - 动态添加发现蓝牙设备到 ListPreference

android - 如何使用 Java(不是 Kotlin)在 Android 中使用 RxJava 管理状态

android - SD卡删除通知,它是如何完成的?广播还是服务?

java - onStop() 在线状态问题 - 主屏幕与之前的 Activity

java - 将项目添加到列表首选项

安卓。偏好 Activity 。列表首选项。如何更改 ListPreference 的背景颜色?

android - 检查 JSONObject 键是否存在

windows - 适用于 Windows Mobile 6 的加速度计 API

ios - SWIFT:iPhone 被握住或放在 table 上 “upwards”

iphone - 关于 iPhone 加速计库有什么想法吗?