使用androidx.preference.PreferenceScreen和PreferenceScreen

时间:2018-10-29 13:21:00

标签: android sharedpreferences android-xml android-preferences androidx

我的应用定位到API 28,并且最低为API 15。作为支持库,我正在使用AndroidX
我有一个活动托管的首选项片段,如下所示:

SettingsFragment.java

package com.example.app;

import android.os.Bundle;

import androidx.preference.PreferenceFragmentCompat;

public class SettingsFragment extends PreferenceFragmentCompat {

    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.preferences, rootKey);

    }
}

SettingsActivity.java

package com.example.app;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

public class SettingsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
    }
}

这是SettingsFragment.java

使用的XML布局

preferences.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <SwitchPreference
        android:defaultValue="false"
        android:key="pref_switch"
        android:title="@string/switch" />
</PreferenceScreen>

作为首选项层次结构的根,我应该使用PreferenceScreen还是androidx.preference.PreferenceScreen来使布局实际上向后兼容(使用AndroidX)吗?两者有什么区别?最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

来自the docs

  

AndroidX是Android团队用来执行以下任务的开源项目   在Jetpack内开发,测试,打包,版本和发行库。

     

AndroidX是对原始Android Support Library的重大改进。与支持库一样,AndroidX与   Android操作系统,并提供跨Android的向后兼容性   发布。 AndroidX通过提供以下功能完全替代了支持库   功能奇偶校验和新库。此外,AndroidX还包括   具有以下功能:

     
      
  • AndroidX中的所有软件包都位于以字符串androidx开头的一致名称空间中。支持库软件包已   映射到相应的androidx.*包中。完整的映射   所有旧的类,并为新的类构建工件,请参见   Package Refactoring页。
  •   

因此,简单来说,应该使用新的库而不是支持库,因为它具有最新的组件和功能。

因此,您的PreferenceScreenandroidx.preference.PreferenceScreen相同,但捆绑了不同的包装器。