将偏好设置迁移到AndroidX

时间:2019-01-13 15:10:41

标签: java android androidx

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

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

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

3 个答案:

答案 0 :(得分:2)

要回答我自己的问题-不值得迁移现有的偏好活动。如文档中所述,创建一个空的并手动设置片段更快。在这种情况下,一切似乎都可以正常工作,并且以前的大多数代码都未使用。

答案 1 :(得分:1)

转到Android Studio功能区中的重构选项。然后单击迁移到bar_width

还要在AndroidX文件中添加这两行:

build.properties

这些行将迫使未迁移到android.useAndroidX=true android.enableJetifier=true 的类在迁移时进行迁移。

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

答案 2 :(得分:0)

我不得不将现有项目迁移到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