代替Android 10+上已弃用的android.preference库有什么用?

时间:2019-09-10 07:42:18

标签: android android-preferences androidx

我启动了新的电视应用,现在我需要针对流的质量,流的语言等开发动态偏好设置。 因此,我打算使用android.preference库并根据流数据动态生成perfs。但是在https://developer.android.com/guide/topics/ui/settings.html上是

  

注意:本指南说明了如何使用AndroidX首选项库。   从Android 10开始,平台android.preference库为   不推荐使用。

但是没有重定向到替换。那么用什么代替android.preference库呢?

该指南也有说明:

  

注意:本指南假定您正在使用    androidx.preference:preference :1.1.0-alpha04或更高版本。一些功能   可能在旧版本的库中不可用。

因此androidx.preference:preference将被弃用。

2 个答案:

答案 0 :(得分:2)

  

平台android.preference库已弃用。但是没有重定向到替换。

您可以签入Android 10 documentation
自Android 10起,不推荐使用android.preference库。开发人员应改用AndroidX偏好库,该库是Android Jetpack的一部分。

替换为androidx-preference库。
只需使用:

dependencies {
    def preference_version = "1.1.0"

    // Java
    implementation "androidx.preference:preference:$preference_version"
    // Kotlin
    implementation "androidx.preference:preference-ktx:$preference_version"
}

有关release notes的更多信息。

也:

  

注意:本指南假定您使用的是androidx.preference:preference:1.1.0-alpha04或更高版本。某些功能可能在该库的旧版本上不可用。

It means,当发布处于Alpha版本时,可以添加,删除或更改API。

答案 1 :(得分:0)

要阐明升级到使用AndroidX首选项库的步骤(基于@GabrieleMariotti的有用答案):

  • 在您的build.gradle (Module:app)中将以下内容添加到dependencies

    dependencies {
    ...
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation "androidx.preference:preference:1.1.0"
    ...
    }
    
  • 我也将xmlns:android的URL保留在res / xml / my_preferences.xml中,尽管documentation提出了其他建议。也就是说,我有

    <PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <PreferenceCategory android:title="Individual">
            <Preference
                android:key="preference_play_activity"
                android:title="Play Activity">
                <intent
                    android:targetClass="com.myorg.mythirdapp.PlayActivity"
                    android:targetPackage="com.myorg.mythirdapp" />
            </Preference>
            ...
    

    ...而不是...

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