Мое приложение настроено на 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();
}
}
А вот макет XML, используемый 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>
Как корень иерархии предпочтений, я должен использовать PreferenceScreen
или androidx.preference.PreferenceScreen
, чтобы макет был обратно совместимым (с использованием AndroidX)? Какая разница между двумя? Какая лучшая практика?