【问题标题】:PreferenceFragmentCompat is not taking the correct androidx PreferenceScreenPreferenceFragmentCompat 没有采用正确的 androidx PreferenceScreen
【发布时间】:2026-01-19 01:35:02
【问题描述】:

我正在尝试使用 androidx.preference:preference:1.0.0 创建首选项屏幕,但是,当我按照本指南 https://developer.android.com/guide/topics/ui/settings.html 创建设置 xml 文件时,它正在使用平台 Preferences

因为它正在使用android.preference,所以我不能使用'SeekBarPreferecewhich is only inandroidx`,这就是它显示警告的原因。

我可以更改包名称以适合 androidx 的。但是,现在它找不到它并且可以检查参考(它找到了 PreferenceScreenPreferenceCategory,但没有找到同一包中的 SeekBarPreference

你们中有人遇到过吗?代码如下:


class SettingsFragment : PreferenceFragmentCompat() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.settings, rootKey)
    }

}

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

    <PreferenceCategory
        app:title="@string/settings_notifications">

        <SwitchPreference
            app:key="notifications"
            app:title="@string/settings_news"
            android:icon="@drawable/menu_icon_news"
            android:summaryOff="@string/settings_news_off"
            android:summaryOn="@string/settings_news_on"/>

        <SeekBarPreference
            app:key="feedback"
            app:title="@string/settings_aviso_level"
            android:max="5"
            android:defaultValue="5"
            android:icon="@drawable/ic_notifications_black_24dp"

            />

    </PreferenceCategory>
</PreferenceScreen>

编辑: 我在 Android Studio 3.4 中遇到了这个问题,它在 3.5 中得到了修复

【问题讨论】:

    标签: android preference preferencefragment


    【解决方案1】:

    您使用的是哪个版本的 Android Studio?这已在 3.5 中修复,因此如果您使用的是最新版本,它应该可以工作。

    无论如何,这只是工作室显示的警告 - 这并不意味着它正在使用 android.preference.* 类。如果您使用androidx.preference.* 中的xml 文件,即使用PreferenceFragmentCompat,那么它将正确使用androidx 类-因此它应该可以正常工作,您可以忽略它,直到您更新您的Android Studio。

    您既可以只使用类名,如SeekBarPreference,也可以使用完全限定名,androidx.preference.SeekBarPreference,并且在构建和运行应用程序时两者都应该可以工作。

    【讨论】: