web-dev-qa-db-ja.com

androidx.preference.PreferenceScreenとPreferenceScreenの使用の違い

私のアプリは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を使用)? 2つの違いは何ですか?ベストプラクティスは何ですか?

5
Yan Karin

the docs から:

AndroidXは、Androidチームが Jetpack 内のライブラリの開発、テスト、パッケージ、バージョン、リリースに使用するオープンソースプロジェクトです。

AndroidXは、元のAndroid Support Library を大幅に改善したものです。サポートライブラリと同様に、AndroidXはAndroid OSおよびAndroidリリース間での後方互換性を提供します。AndroidXは、機能のパリティと新しいライブラリを提供することにより、サポートライブラリを完全に置き換えます。さらに、AndroidXには次の機能が含まれます。

  • AndroidXのすべてのパッケージは、文字列androidxで始まる一貫した名前空間にあります。サポートライブラリパッケージは、対応するandroidx.*パッケージにマップされています。すべての古いクラスとビルドアーティファクトの新しいクラスへの完全なマッピングについては、 Package Refactoring ページを参照してください。

簡単に言えば、最新のコンポーネントと機能を備えているため、サポートライブラリの代わりに使用するのは新しいライブラリです。

したがって、PreferenceScreenandroidx.preference.PreferenceScreenと同じですが、異なるラッパーにバンドルされています。

1
Karan Mer