返回

安卓10迁移,用Kotlin复现PreferenceActivity,androidx使用全攻略

Android

引言

Android 10横空出世,在浮躁的更新风潮中,我们静下心来回顾一些被遗忘在角落的更新。AndroidX ,作为谷歌官方大力的主推产品,统一了Android支持库,为我们带来了不少惊喜。

这次我就以Preference 为媒介,带你一起探索AndroidX的全新世界。从官方文档到实战操作,层层剥开它的神秘面纱。

官方文档的缺陷

在使用Preference的过程中,我参考了官方文档。但令我失望的是,文档中存在一些错误和不足,给我的探索带来了不小的阻碍。

比如,在使用PreferenceFragmentCompat时,官方文档中没有明确指出需要在build.gradle 文件中添加依赖。这导致我在编译时遇到了错误,浪费了不少时间排查。

androidx.preference的正确用法

尽管官方文档存在缺陷,但我还是成功地掌握了androidx.preference库的使用方法。

  1. 添加依赖
dependencies {
    implementation "androidx.preference:preference:1.1.1"
}
  1. 使用PreferenceFragmentCompat
class MyPreferenceFragment : PreferenceFragmentCompat() {
    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.preferences, rootKey)
    }
}
  1. 使用PreferenceActivity
class MyPreferenceActivity : PreferenceActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        addPreferencesFromResource(R.xml.preferences)
    }
}

示例代码

// preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory
        android:title="设置">

        <CheckBoxPreference
            android:key="pref_dark_mode"
            android:title="深色模式"
            android:defaultValue="false" />

        <ListPreference
            android:key="pref_language"
            android:title="语言"
            android:entries="@array/languages"
            android:entryValues="@array/language_values"
            android:defaultValue="en" />

    </PreferenceCategory>

</PreferenceScreen>

总结

AndroidX的出现为Android开发带来了新的机遇。虽然官方文档存在一些缺陷,但瑕不掩瑜,androidx.preference库仍然是一款值得信赖的工具。

希望这篇文章能给大家带来帮助,在AndroidX的道路上少走一些弯路。

致谢

感谢谷歌官方对AndroidX的支持,让我们能够享受到更方便、更强大的开发工具。