我正在尝试将旧的自动生成设置活动(来自Android Studio中的活动画廊)迁移到AndroidX
。不幸的是,我找不到任何关于如何做到这一点的信息。官方文档并没有提供很大的帮助,因为它们假定您已经有了所有的代码,可以添加您的首选项片段和XML
。
我尝试将旧的PreferenceScreen
切换到AndroidX
,将PreferenceFragment
切换到PreferenceFragmentCompat
,但这只会导致运行时异常。
有人知道如何执行此类迁移吗?
我需要将一个现有项目迁移到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
在 Android Studio 的功能区中选择重构选项,然后单击迁移到AndroidX
。
此外,在build.properties
文件中添加这两行:
android.useAndroidX=true
android.enableJetifier=true
这些代码将强制那些没有迁移到 AndroidX
的类在迁移时进行迁移。
注意:当提示备份项目时,请备份您的项目!如果您对 AndroidX 不太了解,请先备份您的项目,然后再尝试!
android.preference.PreferenceActivity.switchToHeaderInner()
throwsandroid.app.Fragment$InstantiationException: Trying to instantiate a class xxx.SettingsActivity$GeneralPreferenceFragment that is not a Fragment
- krojew