PreferenceFragmentCompat 没有采用正确的 androidx PreferenceScreen
PreferenceFragmentCompat is not taking the correct androidx PreferenceScreen
我正在尝试使用 androidx.preference:preference:1.0.0
创建首选项屏幕,但是,当我按照本指南 https://developer.android.com/guide/topics/ui/settings.html 创建设置 xml 文件时,它正在使用平台 Preferences
.
由于占用 android.preference
,我无法使用“SeekBarPreferecewhich is only in
androidx”,这就是它显示警告的原因。
我可以更改包名以适合 androidx
个。但是,现在它没有找到它并且可以检查参考(它找到 PreferenceScreen
和 PreferenceCategory
但没有 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 Studio 是什么版本?这已在 3.5 中修复,因此如果您使用的是最新版本,它应该可以正常工作。
无论如何,这只是工作室显示的警告 - 这并不意味着它正在使用 android.preference.*
classes。如果您在 androidx.preference.*
中使用 xml 文件,即使用 PreferenceFragmentCompat
,那么它将正确使用 androidx
classes - 所以它应该可以工作很好,您可以忽略它,直到您更新 Android Studio。
您可以只使用 class 名称,如 SeekBarPreference
,或完全限定名称,androidx.preference.SeekBarPreference
,两者都应该在构建和 运行 应用程序时起作用.
我正在尝试使用 androidx.preference:preference:1.0.0
创建首选项屏幕,但是,当我按照本指南 https://developer.android.com/guide/topics/ui/settings.html 创建设置 xml 文件时,它正在使用平台 Preferences
.
由于占用 android.preference
,我无法使用“SeekBarPreferecewhich is only in
androidx”,这就是它显示警告的原因。
我可以更改包名以适合 androidx
个。但是,现在它没有找到它并且可以检查参考(它找到 PreferenceScreen
和 PreferenceCategory
但没有 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 Studio 是什么版本?这已在 3.5 中修复,因此如果您使用的是最新版本,它应该可以正常工作。
无论如何,这只是工作室显示的警告 - 这并不意味着它正在使用 android.preference.*
classes。如果您在 androidx.preference.*
中使用 xml 文件,即使用 PreferenceFragmentCompat
,那么它将正确使用 androidx
classes - 所以它应该可以工作很好,您可以忽略它,直到您更新 Android Studio。
您可以只使用 class 名称,如 SeekBarPreference
,或完全限定名称,androidx.preference.SeekBarPreference
,两者都应该在构建和 运行 应用程序时起作用.