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?
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 entsprechendeandroidx.*
-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.