首页 > 解决方案 > 实现 AndroidX SeekBarPreference 时的问题

问题描述

我正在尝试将SeekBarPreference添加到我的Android 设置PreferenceScreen。例如,当我使用 EditTextPreference 时,一切正常,所以肯定是 SeekBar 导致了问题。

第一个问题:我可以用 指定一个最小值app:min="",但app:max=""似乎不存在。我猜这是 API 中的一个错误,因为我在文档中找到了这个语句:

其他 SeekBar 特定属性(例如标题、摘要、defaultValue、min、max)可以直接在首选项小部件布局上设置。

第二个问题:当我使用下面的代码时,我的应用程序在打开设置时崩溃并显示以下消息:Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

我的代码:

public class PreferenceFragment extends PreferenceFragmentCompat {

    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.settings, rootKey);
    }
}

<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">

    <PreferenceCategory
        app:key="category_playback"
        app:title="Playback">

        <SeekBarPreference
            app:defaultValue="15"
            app:key="skip_time"
            app:min="5"
            app:summary="Seconds to skip"
            app:title="Skip time" />

    </PreferenceCategory>

</PreferenceScreen>

有人知道如何解决它吗?如果没有解决方案,我将尝试以编程方式实现它。

谢谢。

标签: androidandroidxandroid-preferencesandroid-seekbarandroid-settings

解决方案


对于您的第一个问题,请使用:

android:max="10"

对于您的第二个问题,请尝试清除您的应用数据。


推荐阅读