Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将首选项迁移到AndroidX_Java_Android_Androidx - Fatal编程技术网

Java 将首选项迁移到AndroidX

Java 将首选项迁移到AndroidX,java,android,androidx,Java,Android,Androidx,我正在尝试将旧的自动生成(从Android Studio中的活动库)设置活动迁移到AndroidX。不幸的是,我找不到任何关于如何做到这一点的信息。官方文档没有什么帮助,因为它们假设您已经准备好了所有代码来添加首选项片段和XML 我尝试将旧的PreferenceScreen切换到AndroidXone,并将PreferenceFragment切换到PreferenceFragmentCompat,但这只会导致运行时异常 有人知道如何执行这种迁移吗?转到Android Studio功能区中的重构选

我正在尝试将旧的自动生成(从Android Studio中的活动库)设置活动迁移到
AndroidX
。不幸的是,我找不到任何关于如何做到这一点的信息。官方文档没有什么帮助,因为它们假设您已经准备好了所有代码来添加首选项片段和
XML

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


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

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

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

android.useAndroidX=true
android.enableJetifier=true
这些行将强制未移动到
AndroidX
的类在迁移时迁移


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

回答我自己的问题-不值得迁移现有的首选项活动。像在文档中一样,创建一个空的片段并手动设置片段会更快。在这种情况下,一切似乎都正常工作,以前的大多数代码都没有使用过

我不得不将现有项目迁移到AndroidX

所以我刚切换到
首选项FragmentCompat

下面是一些示例代码:

爪哇:

xml:



很遗憾,这不会迁移首选项。请确保添加此实现“androidx.preference:preference:1.0.0”。您使用的是java还是kotlin?我使用的是java,依赖项是added.oops!抱歉,我没有任何java参考,但我几乎在kotlin的每个项目中都使用PreferenceFragmentCompat。您能否共享错误
android.preference.PreferenceActivity.switchToHeaderInner()
抛出
android.app.Fragment$InstantiationException:尝试实例化一个类xxx.SettingsActivity$GeneralReferenceFragment,该类不是片段
public class SettingsFragment extends
        androidx.preference.PreferenceFragmentCompat implements
        androidx.preference.Preference.OnPreferenceClickListener,
        androidx.preference.Preference.OnPreferenceChangeListener {
       // ... your code
}
<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