将首选项迁移到 AndroidX

Migrating preferences to AndroidX

我正在尝试将旧的自动生成(来自 Android Studio 中的 activity 库)设置 activity 迁移到 AndroidX。不幸的是,我找不到有关如何执行此操作的任何信息。官方文档不是很有帮助,因为它们假设您已经准备好所有代码来添加您的首选项片段和 XML

我尝试将旧的 PreferenceScreen 切换为 AndroidX,并将 PreferenceFragment 切换为 PreferenceFragmentCompat,但这只会导致运行时异常。

有人知道如何执行这样的迁移吗?

转到 Android Studio 功能区中的 Refactor 选项。然后点击迁移到 AndroidX.

此外,在 build.properties 文件中添加这两行:

android.useAndroidX=true
android.enableJetifier=true

这些行将强制未移动到 AndroidX 的 类 在迁移时迁移。

注意:出现提示时请备份您的项目!如果您对 AndroidX 了解不多,请备份您的项目然后尝试!

回答我自己的问题 - 不值得迁移现有的偏好 activity。像文档中那样制作一个空的并手动设置片段会更快。在这种情况下一切似乎都在工作,并且以前的大部分代码都没有使用过。

我必须将现有项目迁移到 AndroidX。

所以我刚切换到 PreferenceFragmentCompat

为了给你一个想法,这里有一些示例代码:

Java:

public class SettingsFragment extends
        androidx.preference.PreferenceFragmentCompat implements
        androidx.preference.Preference.OnPreferenceClickListener,
        androidx.preference.Preference.OnPreferenceChangeListener {
       // ... your code
}

xml:

<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="@string/PREF_SCR_MAIN">

    <androidx.preference.PreferenceCategory
        android:key="@string/PREF_CAT_MAIN"
        android:title="@string/pref_cat_main">

        <androidx.preference.CheckBoxPreference
            android:key="@string/TOUCH_TWICE_TO_EXIT"
            android:summary="@string/pref_sum_touch_twice_to_exit"
            android:title="@string/pref_title_touch_twice_to_exit" />

    </androidx.preference.PreferenceCategory>

</androidx.preference.PreferenceScreen