web-dev-qa-db-de.com

Unterschied zwischen androidx.preference.PreferenceScreen und PreferenceScreen

Meine App richtet sich an API 28 und hat ein Minimum an API 15. Als Unterstützungsbibliothek verwende ich AndroidX.
Ich habe ein Präferenzfragment, das von einer Aktivität gehostet wird, wie folgt: 

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

Und hier ist das XML-Layout von 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>

Soll ich als Stamm der Präferenzhierarchie PreferenceScreen oder androidx.preference.PreferenceScreen verwenden, damit das Layout tatsächlich abwärtskompatibel ist (mit AndroidX)? Was ist der Unterschied zwischen den beiden? Was ist die beste Praxis?

4
Yan Karin

Von den Dokumenten :

AndroidX ist das Open-Source-Projekt, mit dem das Android-Team Bibliotheken innerhalb von Jetpack entwickeln, testen, paketieren, versionieren und freigeben.

AndroidX ist eine wesentliche Verbesserung des ursprünglichen Android Supports Bibliothek . Wie die Support Library wird AndroidX separat von der Android-Betriebssystem und bietet Abwärtskompatibilität für Android Veröffentlichungen. AndroidX ersetzt die Support Library vollständig durch die Bereitstellung von Feature-Parität und neue Bibliotheken. Zusätzlich beinhaltet AndroidX die folgende Funktionen:

  • Alle Pakete in AndroidX leben in einem konsistenten Namespace, beginnend mit der Zeichenfolge androidx. Die Support Library-Pakete lauten in entsprechende androidx.*-Pakete abgebildet. Für eine vollständige Abbildung von alle alten Klassen und Artefakte für die neuen, siehe Paket Refactoring Seite.

In einfachen Worten ist es also eine neue Bibliothek, die Sie anstelle der Unterstützungsbibliothek verwenden sollten, da diese über die neuesten Komponenten und Funktionen verfügt. 

Ihre PreferenceScreen ist also identisch mit androidx.preference.PreferenceScreen, jedoch mit einem anderen Wrapper gebündelt. 

1
Karan Mer