web-dev-qa-db-fra.com

Différence d'utilisation entre androidx.preference.PreferenceScreen et PreferenceScreen

Mon application cible API 28 et a un API 15 minimum. En tant que bibliothèque de support, j'utilise AndroidX.
J'ai un fragment de préférence hébergé par une activité, comme ceci: 

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();
    }
}

Et voici la mise en page XML utilisée par SettingsFragment.Java 

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>

En tant que racine de la hiérarchie des préférences, dois-je utiliser PreferenceScreen ou androidx.preference.PreferenceScreen pour que la présentation soit réellement compatible avec les versions antérieures (avec AndroidX)? Quelle est la différence entre les deux? Quelle est la meilleure pratique?

4
Yan Karin

De les docs :

AndroidX est le projet open-source utilisé par l'équipe Android pour développer, tester, mettre en paquet, versions et librairies au sein de Jetpack .

AndroidX est une amélioration majeure par rapport au système d’origine Android Support Bibliothèque . Comme la bibliothèque de support, AndroidX est fourni séparément du fichier Android OS et offre une compatibilité ascendante sur Android communiqués. AndroidX remplace complètement la bibliothèque de support en fournissant parité des fonctionnalités et nouvelles bibliothèques. De plus, AndroidX inclut le Fonctionnalités suivantes:

  • Tous les packages sous AndroidX résident dans un espace de noms cohérent commençant par la chaîne androidx. Les packages de la bibliothèque de support ont été mappé dans les packages androidx.* correspondants. Pour une cartographie complète de toutes les anciennes classes et construire des artefacts aux nouveaux, voir le Refactoring de paquets page.

Donc, en termes simples, c’est une nouvelle bibliothèque que vous devriez utiliser à la place de la bibliothèque de support car elle possède les derniers composants et fonctionnalités. 

Ainsi, votre PreferenceScreen est identique à androidx.preference.PreferenceScreen mais fourni avec un wrapper différent. 

1
Karan Mer