PreferenceManagergetDefaultSharedPreferencesはAndroidQで非推奨になりました


回答:


213

のAndroidXサポートライブラリバージョンを使用できます。PreferenceManagerつまりandroidx.preference.PreferenceManager、ではありませんandroid.preference.PreferenceManager

build.gradleに以下を追加することを忘れないでください。

implementation 'androidx.preference:preference:1.1.1'

50
依存関係を追加するのを忘れました:実装 "androidx.preference:preference:1.1.0"
Abhinav Saxena

1
@AbhinavSaxenaはい、もちろんです。これは、サポートライブラリを使用する場合は暗黙的です。この回答に対する以前の編集では、kotlinのみのktx依存関係が追加されました。kotlinのみだったので、その編集をロールバックしました。
laalto

これはそうではimplementationないようdependencyです?
リチャードバラクロウ

1.1.0:好み:インプリメンテーション「androidx.preference見つかりませんでした:「:アプリ@ debugAndroidTest / compileClasspath」の解決の依存関係にできません:ないそれはどちらか動作すること
リチャードBarraclough

私は興味がある; なぜ彼らはそのインターフェースを非推奨にし、共有設定を取得する他の方法が好まれたのですか、それとも意図的にandroidxに切り替えたのですか?
エドワードフォーク

154

パッケージpreferenceandroidx PreferenceManagerを提供します:

Java: implementation "androidx.preference:preference:1.1.1"

Kotlin: implementation "androidx.preference:preference-ktx:1.1.1"


つまりandroid.preference.PreferenceManagerandroidx.preference.PreferenceManager


現在使用しているクラスであるPreferenceFragmentCompatも参照してくださいPreferenceFragment


に直接リンクを追加しましたがPreferenceFragmentCompat、当時は存在していませんでした...通常は、設定を更新しようとしたときに直面する可能性のある次の1つの非推奨の問題です。他のリンクされた回答は、限られた時間だけ有効でした。
Martin Zeitler

API 29より前のAPIで使用できますか?
H.Karatsanov

3

キーと値のペアを保存および取得するだけの場合は、次のものを置き換えることができます。

 prefs = PreferenceManager.getDefaultSharedPreferences(this); 

と:

 prefs = getSharedPreferences(
            "my.app.packagename_preferences", Context.MODE_PRIVATE);

新しい実装には必ず正しいファイル名を使用してください。そうしないと、ユーザーはgetDefaultSharedPreferences(!)で保存されたすべてのものにアクセスできなくなります。以下は、getDefaultSharedPreferencesが使用するファイル名を取得します。

getPackageName() + "_preferences"

2

PreferenceManager ドキュメントからの引用:

このクラスはAPIレベル29で非推奨になりました。すべてのデバイスで一貫した動作を実現
するには、AndroidX設定ライブラリを使用してください。AndroidX設定ライブラリの使用の詳細については、「設定」を参照してください。


19
元のものについて一貫していなかったものは何ですか?
Androidデベロッパー

1

はい、非推奨です。すべてのデバイスで一貫した動作を実現するには、AndroidX設定ライブラリを使用してください。AndroidX設定ライブラリの使用の詳細については、「設定」を参照してください。

これに従ってください-

PreferenceManager

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.