PreferenceManager getDefaultSharedPreferences เลิกใช้งานใน Android Q


คำตอบ:


237

คุณสามารถใช้ AndroidX รุ่นสนับสนุนห้องสมุดPreferenceManagerคือไม่androidx.preference.PreferenceManagerandroid.preference.PreferenceManager

อย่าลืมเพิ่มสิ่งต่อไปนี้ใน build.gradle ของคุณ

implementation 'androidx.preference:preference:1.1.1'

50
คุณลืมเพิ่มการอ้างอิง: การใช้งาน "androidx.preference: ค่ากำหนด: 1.1.0"
Abhinav Saxena

1
@AbhinavSaxena ใช่แน่นอน นั่นหมายถึงเมื่อใช้ไลบรารีสนับสนุน การแก้ไขคำตอบก่อนหน้านี้ได้เพิ่มความสอดคล้อง ktx เฉพาะ kotlin ฉันย้อนกลับการแก้ไขนั้นเพราะเป็น kotlin เท่านั้น
laalto

ดูเหมือนว่าจะต้องimplementationไม่ใช่dependency?
Richard Barraclough

ไม่ได้ผลอย่างใดอย่างหนึ่ง: ไม่สามารถแก้ไขการพึ่งพาสำหรับ ": app @ debugAndroidTest / compileClasspath": ไม่พบการใช้งาน "androidx.preference: ค่ากำหนด: 1.1.0
Richard Barraclough

ฉันอยากรู้; เหตุใดพวกเขาจึงเลิกใช้งานอินเทอร์เฟซนั้นและเป็นวิธีอื่นในการรับค่ากำหนดที่ใช้ร่วมกันที่ต้องการหรือกำลังเปลี่ยนไปใช้ androidx ตามเจตนา
Edward Falk

161

แพ็คเกจpreferenceให้androidx PreferenceManager :

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

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


เช่นเปลี่ยนandroid.preference.PreferenceManagerเป็นandroidx.preference.PreferenceManager


ดูPreferenceFragmentCompatซึ่งเป็นPreferenceFragmentคลาสปัจจุบันที่จะใช้


เพิ่มลิงก์โดยตรงไปยังPreferenceFragmentCompatซึ่งไม่มีอยู่ในตอนนั้น ... โดยปกติแล้วปัญหาการเลิกใช้งานถัดไปที่อาจเกิดขึ้นเมื่อพยายามอัปเดตการตั้งค่า คำตอบที่เชื่อมโยงอื่น ๆ ใช้ได้ในระยะเวลา จำกัด เท่านั้น
Martin Zeitler

เราสามารถใช้ใน API ก่อน API 29 ได้หรือไม่
H.Karatsanov

5

หากคุณเพียงแค่บันทึกและดึงข้อมูลคู่คีย์ - ค่าคุณสามารถแทนที่ได้:

 prefs = PreferenceManager.getDefaultSharedPreferences(this); 

กับ:

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

อย่าลืมใช้ชื่อไฟล์ที่ถูกต้องสำหรับการใช้งานใหม่มิฉะนั้นผู้ใช้ของคุณจะสูญเสียการเข้าถึงทุกสิ่งที่บันทึกด้วย getDefaultSharedPreferences (!) ต่อไปนี้จะได้รับชื่อไฟล์ getDefaultSharedPreferences ใช้:

getPackageName() + "_preferences"

2

อ้างจากPreferenceManager เอกสาร :

คลาสนี้เลิกใช้แล้วใน API ระดับ 29
ใช้ AndroidX Preference Libraryสำหรับพฤติกรรมที่สอดคล้องกันในทุกอุปกรณ์ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้การตั้งค่า AndroidX ห้องสมุดดูการตั้งค่า


20
สิ่งใดไม่สอดคล้องกับต้นฉบับ
นักพัฒนา Android

1

ใช่มันเลิกใช้งานแล้ว ใช้ AndroidX Preference Library สำหรับพฤติกรรมที่สอดคล้องกันในทุกอุปกรณ์ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ AndroidX Preference Library โปรดดูการตั้งค่า

ทำตามนี้ -

PreferenceManager


0

kotlin libray

implementation 'androidx.preference:preference-ktx:1.1.1'

kotlin ใช้ Configuration.getInstance () โหลด (สิ่งนี้ androidx.preference.PreferenceManager.getDefaultSharedPreferences (นี้))

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.