העדפה

בניית מסכי הגדרות אינטראקטיביים בלי שתצטרכו ליצור אינטראקציה עם האחסון במכשיר או לנהל את ממשק המשתמש.
העדכון האחרון גרסה יציבה מועמד לפרסום גרסת בטא גרסת אלפא
26 ביולי 2023 1.2.1 - - -

הצהרה על יחסי תלות

כדי להוסיף תלות ב-Preference (העדפה), עליך להוסיף את מאגר Google Maven פרויקט. למאגר Maven של Google אפשר לקבל מידע נוסף.

מוסיפים את יחסי התלות של פריטי המידע הנדרשים בקובץ build.gradle בשביל האפליקציה או המודול שלך:

מגניב

dependencies {
    def preference_version = "1.2.1"

    // Java language implementation
    implementation "androidx.preference:preference:$preference_version"
    // Kotlin
    implementation "androidx.preference:preference-ktx:$preference_version"
}

Kotlin

dependencies {
    val preference_version = "1.2.1"

    // Java language implementation
    implementation("androidx.preference:preference:$preference_version")
    // Kotlin
    implementation("androidx.preference:preference-ktx:$preference_version")
}

אפשר לקרוא מידע נוסף על יחסי תלות במאמר הוספת יחסי תלות של build.

משוב

המשוב שלך עוזר לנו לשפר את Jetpack. נשמח לשמוע אם גילית בעיות חדשות או אם יש לך רעיונות לשיפור הספרייה הזו. מומלץ לעיין בעיות קיימות בספרייה הזו לפני שיוצרים ספר חדש. אפשר להוסיף את ההצבעה שלך לבעיה קיימת על ידי לחיצה על לחצן הכוכב.

דיווח על בעיה חדשה

מקורות מידע בנושא מעקב אחר בעיות אפשר לקבל מידע נוסף.

גרסה 1.2

גרסה 1.2.1

26 ביולי 2023

androidx.preference:preference:1.2.1 משוחרר. גרסה 1.2.1 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • PreferenceHeaderFragmentCompat מטפל עכשיו בצורה נכונה בלחצן 'הקודם' של המערכת כשמשתמשים בו בתוך ComponentDialog או כשמשתמשים בספריות כמו @AndroidEntryPoint של Hilt שעופסת את ה-Context של ה-Fragment.
  • ההעדפה תלויה עכשיו בפעילות 1.5.1. (Ie5d22)
  • עכשיו PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment מפיץ את header.extras כארגומנטים מסוג Fragment.

גרסה 1.2.0

26 בינואר, 2022

androidx.preference:preference:1.2.0 ו-androidx.preference:preference-ktx:1.2.0 שוחררו. גרסה 1.2.0 כוללת את ההתחייבויות האלה.

שינויים חשובים מאז 1.1.0

  • הוספת את PreferenceHeaderFragmentCompat להעדפה של שתי חלוניות שמתאימה את עצמה באופן אוטומטי לפי גודל המכשיר שבו נעשה שימוש, כך שהיא מתאימה לשימוש בטלפונים, במכשירים מתקפלים ובטאבלטים. חלונית הכותרת מוצגת על ידי שינוי של השיטה onCreatePreferenceHeader() ב-PreferenceHeaderFragmentCompat. כל <Preference> בכותרת PreferenceFragmentCompat שמשתמשת ב-app:fragment יגרום להצגת המקטע הזה בחלונית הפרטים השנייה. אפשר להתאים אישית את מקטע הפרטים הראשוני שאמור להיות מוצג לפני בחירה ידנית של העדפה מסוימת על ידי שינוי onCreateInitialDetailFragment(). יישום ברירת המחדל מחזיר את ההעדפה הראשונה עם מקטע שמוגדר בה.
class TwoPanePreference : PreferenceHeaderFragmentCompat() {
    override fun onCreatePreferenceHeader(): PreferenceFragmentCompat {
        return PreferenceHeader()
    }
}
  • הוסיפו הערות לביטול נעילה לרבים ממשקי API שלא ציינו קודם לכן את @NonNull או @Nullable. מדובר בשינוי שעלול לגרום לכשלים במקור של Kotlin אם יכולת ה-null שבחרת בקוד Kotlin שלך לא תאמה ליכולת ה-null שמוגדרת עכשיו.

  • עכשיו אנחנו ב-PreferenceFragmentCompat מחפשים הטמעות של הממשק OnPreferenceStartFragmentCallback, OnNavigateToScreenListener ו-OnDisplayPreferenceDialogListener במקטעי הורה לפני שהם בודקים אם הפעילות או ההקשר של האירוח מטמיעים את הממשקים האלה.

גרסה 1.2.0-rc01

15 בדצמבר 2021

androidx.preference:preference:1.2.0-rc01 ו-androidx.preference:preference-ktx:1.2.0-rc01 מתפרסמים ללא שינויים מאז 1.2.0-beta01. גרסה 1.2.0-rc01 מכילה את שמירות האלה.

גרסה 1.2.0-beta01

17 בנובמבר 2021

androidx.preference:preference:1.2.0-beta01 ו-androidx.preference:preference-ktx:1.2.0-beta01 יצאו ללא שינויים מהעדפה 1.2.0-alpha02. גרסה 1.2.0-beta01 מכילה את התחייבויות אלה.

גרסה 1.2.0-alpha02

3 בנובמבר 2021

androidx.preference:preference:1.2.0-alpha02 ו-androidx.preference:preference-ktx:1.2.0-alpha02 שוחררו. גרסה 1.2.0-alpha02 מכילה את התחייבויות אלה.

שינויים ב-API

  • הוסיפו הערות לביטול נעילה לרבים ממשקי API שלא ציינו קודם לכן את @NonNull או @Nullable. (I04252, Ie2cc0)
  • הסרת ה-API openPreference() מ: PreferenceHeaderFragmentCompat - השיטה הזו היא שנקראה עבורך, ולא צריך לקרוא לה באופן ידני. (Ia6989)

שינויים בהתנהגות

  • קריאות חוזרות (callbacks) של PreferenceFragmentCompat עבור OnNavigateToScreenListener, וגם OnDisplayPreferenceDialogListener עוקבים עכשיו אחר דפוס זהה לזה של OnPreferenceTreeClickListener ו לחפש בהיררכיית החלקים של ההורה מאזינים לפני שהם רוצים לבדוק אם המארח ההקשר או הפעילות מטמיעים את הממשקים האלה. (I7ae6c)

גרסה 1.2.0-alpha01

27 באוקטובר 2021

androidx.preference:preference:1.2.0-alpha01 ו-androidx.preference:preference-ktx:1.2.0-alpha01 שוחררו. גרסה 1.2.0-alpha01 מכילה את התחייבויות אלה.

תכונות חדשות

  • הוספת את PreferenceHeaderFragmentCompat להעדפה של שתי חלוניות (I9a2d8)

שינויים בהתנהגות

  • עכשיו ניתן להטמיע קריאות חוזרות (callback) של העדפות עבור OnPreferenceDisplayDialogCallback, OnPreferenceStartScreenCallback ו-OnPreferenceStartFragmentCallback בהקשר שאינו של פעילות. הפונקציה getContext() מסומנת כדי לראות אם היא מיישמת את הקריאות החוזרות האלה לפני הבדיקה של getActivity(). אם getContext() מחזירה פעילות (התרחיש הנפוץ), לא שינוי בהתנהגות.

  • עכשיו, במסגרת הקריאה של PreferenceFragmentCompat אל onPreferenceTreeClick, המערכת מחפשת הטמעות של הממשק OnPreferenceStartFragmentCallback בקטעי הורה לפני שהיא בודקת את הטמעת הפעילות. (c64eed)

גרסה 1.1

גרסה 1.1.1

15 באפריל 2020

androidx.preference:preference:1.1.1 ו-androidx.preference:preference-ktx:1.1.1 שוחררו. גרסה 1.1.1 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • PreferenceDialogFragmentCompat לא יקפיץ יותר IllegalStateException כשמנפחים את FragmentContainerView מ-XML. (b/150051716)

עדכונים בנושא תלות

  • עכשיו ההעדפה תלויה במקטע 1.2.4. (aosp/1277317)
  • התלות ב-preference-ktx תלויה עכשיו ב-androidx.core:core-ktx:1.1.0 וב-androidx.fragment:fragment-ktx:1.2.4, והיא משקפת את יחסי התלות של ארטיפקט preference הראשי ומבטיחה ששדרוג של preference-ktx יעדכן את פריטי המידע העיקריים ופריטי ה--ktx של יחסי תלות טרנזיים. (aosp/1277319)

גרסה 1.1.0

5 בספטמבר 2019

androidx.preference:preference:1.1.0 ו-androidx.preference:preference-ktx:1.1.0 שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.

אם זו הגרסה הראשונה של 1.1.* שאליה מעדכנים, הנה רשימה תמציתית של שינויים גדולים יותר מאז הגרסה היציבה האחרונה, 1.0.0. בנוסף, אפשר להיעזר במדריך ההגדרות, באפליקציה לדוגמה ובשיחת הפסגה של Android למפתחים.

שינויים חשובים מאז 1.0.0

  • PreferenceFragment ומחלקות אחרות שמשתמשים ב-framework Fragments הוצאו משימוש. במקום זאת, צריך להשתמש ב-PreferenceFragmentCompat ובכיתות תואמות אחרות.
  • עכשיו אפשר להגדיר SummaryProvider בהעדפה כדי להגדיר באופן דינמי את הסיכום שלו בכל פעם שההעדפה מתעדכנת או גלויה למשתמש. מידע נוסף זמין במדריך.
  • נוסף ממשק EditTextPreference.OnBindEditTextListener. כך אפשר להתאים אישית את EditText שמוצג בתיבת הדו-שיח המתאימה אחרי יצירת תיבת הדו-שיח. זהו החלפה ישירה לשימוש במאפיינים כמו android:inputType ישירות ב-EditTextPreference, שלא נתמך בספריית AndroidX. מידע נוסף זמין במדריך.
  • בוצעה הוספה של Preference.setCopyingEnabled() אחרי שהיא מוגדרת, לחיצה ארוכה על 'העדפה' תציג תפריט הקשר שמאפשר להעתיק את סיכום ההעדפה.
  • העיצוב של SeekBarPreference עודכן כך שיתאים למפרטי העיצוב. ביומן השינויים המפורט מפורטים שינויים נוספים ב-SeekBarPreference.
  • כמות גדולה של תיקוני באגים, עדכוני סגנון, תיקוני תאימות ברמת ה-API ושיפורי QOL כלליים.

גרסה 1.1.0-rc01

2 ביולי 2019

androidx.preference:preference:1.1.0-rc01 ו-androidx.preference:preference-ktx:1.1.0-rc01 שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.

שינויים ב-API

  • הוצאה משימוש של Preference#onInitializeAccessibilityNodeInfo
  • פרטי צומת הנגישות של השיטה הזו עבור העדפה ספציפית – אבל זוהי שכבה לא נכונה להתאמה אישית הזו. אם רוצים להתאים את נתוני הנגישות, צריך במקום זאת לבטל את ההגדרה onBindViewHolder ולהוסיף את נתוני הנגישות ישירות לתצוגה.

גרסה 1.1.0-beta01

5 ביוני 2019

androidx.preference:preference:1.1.0-beta01 ו-androidx.preference:preference-ktx:1.1.0-beta01 שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.

שינויים חשובים מאז 1.1.0

אם זו גרסת 1.1.* הראשונה שאליה מעדכנים, הנה רשימה תמציתית של שינויים גדולים יותר מאז הגרסה היציבה האחרונה, 1.1.0. בנוסף, אפשר להיעזר במדריך ההגדרות, באפליקציה לדוגמה ובשיחת הפסגה של Android למפתחים.

  • PreferenceFragment ומחלקות אחרות שמשתמשים ב-framework Fragments הוצאו משימוש. במקומו צריך להשתמש ב-PreferenceFragmentCompat ובמחלקות *אחרות.
  • עכשיו אפשר להגדיר את SummaryProvider בהעדפה, ולהגדיר את הסיכום שלו באופן דינמי בכל פעם שההעדפה מתעדכנת או שהיא גלויה למשתמש. מידע נוסף זמין במדריך.
  • נוסף ממשק EditTextPreference.OnBindEditTextListener. כך אפשר להתאים אישית את ה-EditText שמוצג בתיבת הדו-שיח המתאימה לאחר יצירת תיבת הדו-שיח. זהו החלפה ישירה לשימוש במאפיינים כמו android:inputType ישירות ב-EditTextPreference, שלא נתמך בספריית AndroidX. מידע נוסף זמין במדריך.
  • בוצעה הוספה של Preference.setCopyingEnabled() אחרי שהיא מוגדרת, לחיצה ארוכה על 'העדפה' תציג תפריט הקשר שמאפשר להעתיק את סיכום ההעדפה.
  • הסגנון שלSeekBarPreference עודכן כך שיתאים למפרטי העיצוב. ביומן השינויים המפורט מופיע מידע על שינויים אחרים ב-SeekBarPreference.
  • כמות גדולה של תיקוני באגים, עדכוני סגנון, תיקוני תאימות ברמת ה-API ושיפורי QOL כלליים.

שינויים בממשק ה-API מאז 1.1.0-alpha05

  • הסרת getOnBindEditTextListener מ-API ציבורי, עליך להשתמש ב-setOnBindEditTextListener רק במהלך אינטראקציה עם ה-API הזה.

אפשר לדווח על באגים כאן אם נתקלת בבעיות, או אם יש לך הצעות לתכונות חדשות.

גרסה 1.1.0-alpha05

7 במאי 2019

androidx.preference:preference:1.1.0-alpha05 ו-androidx.preference:preference-ktx:1.1.0-alpha05 שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.

תכונות חדשות

  • עודכן הסגנון של 'העדפות' שלא ניתן לבחור – הצבע של הכותרת והסיכום זהה עכשיו כדי להבהיר שאי אפשר לקיים איתם אינטראקציה והם משמשים רק להצגת מידע.
  • הערה: כדאי להוסיף את המאפיין enableCopying="true" להעדפות שלא ניתן לבחור, כדי שניתן יהיה ללחוץ לחיצה ארוכה כדי להעתיק את הסיכום.

תיקוני באגים

  • תוקנה רגרסיה שבה ל-PreferenceCategory ולהעדפות אחרות שלא ניתנות לבחירה היו אפקט של גלים בעת הבחירה
  • תוקנה בעיית נגישות שגרמה לכך ש-TalkBack לא ראה את התפריט הנפתח 'העדפות לגבי תפריט נפתח' כקליקבילי.
  • תוקנו כמה בעיות בפריסה מימין לשמאל
  • עודכנו כמה הערות null ב-PreferenceFragmentCompat כך שיתאימו ל-Fragment

גרסה 1.1.0-alpha04

13 במרץ 2019

androidx.preference:preference:1.1.0-alpha04 ו-androidx.preference:preference-ktx:1.1.0-alpha04 שוחררו. הרשימה המלאה של ההתחייבויות שכלולות בגרסה הזו זמינה כאן.

תכונות חדשות

העדכון של SeekBarPreference!

  • העיצוב עודכן בהתאם למפרטי החומר
    • תווית הערך מוסתרת עכשיו כברירת מחדל, אבל עדיין אפשר להציג אותה באמצעות app:showSeekBarValue="true" או setShowSeekBarValue(true). התווית הזו היא לא חלק ממפרט Material, אבל אנחנו מבינים שהיא עמוסה ולכן נמשיך לתמוך בה – למרות שאנחנו לא ממליצים להשתמש בה.
    • תווית הערך מתעדכנת עכשיו בזמן גרירה של סרגל הדילוג, במקום כשהוא משוחרר. חשוב לשים לב: זה לא אומר שהערך יעודכן באופן פנימי. בהמשך מופיע מידע על ממשק API חדש שמאפשר את הפונקציונליות הזו.
    • הערה: למרות שיש תמיכה בכך, רצוי להימנע מהגדרת סיכום ב-SeekBarPreference (זו לא פעולה מכוונת) והיא לא חלק ממפרט Material.
  • הוספת תמיכה בעדכונים רציפים, כדי לאפשר ל-SeekBar לעדכן את הערך השמור שלו בזמן גרירת ה-SeekBar. אפשר להפעיל את האפשרות הזו מ-XML או באופן פרוגרמטי באמצעות app:updatesContinuously="true" או setUpdatesContinuously(true). סרגל הדילוג יופעל בכל פעם שהמיקום של סרגל הדילוג במסך ישתנה.

שינויים ב-API

  • הוספת הערות חסרות אפסיות לקובץ findPreference()

תיקוני באגים

  • תוקן באג שגרם לכך שמקשי ההאזנה של תפריטי ההקשר לא הוסרו בצורה נכונה אם ההעתקה לא מופעלת

גרסה 1.1.0-alpha03

7 בפברואר 2019

androidx.preference:preference 1.1.0-alpha03

androidx.preference:preference 1.1.0-alpha03 והקבוצה androidx.preference:preference-ktx 1.1.0-alpha03 יושקו עם בעקבות השינויים הבאים.

תיקוני באגים

  • נפתרה בעיה שבה החלון הקופץ 'העתקה/הדבקה' לא הופיע בתיבת הדו-שיח של EditTextPreference ( לפעמים).
  • תוקנה בעיה שבה המתאם הבסיסי לא נרשם כראוי, שגרמה לדליפות זיכרון בתנאים מסוימים (b/121006469)
  • תוקנו מספר קריסות הקשורות לתיבת דו-שיח שהתרחשו במהלך שינוי ההגדרה (b/122167543)
  • הערך המתוקן של SummaryProvider לא פועל עבור MultiSelectListPreference (b/123022772)

גרסה 1.1.0-alpha02

17 בדצמבר 2018

כדאי לעיין גם מדריך ההגדרות עודכן לאחרונה ודוגמה אפליקציה.

תכונות חדשות

  • נוסף ממשק אחד (EditTextPreference.OnBindEditTextListener) כך אפשר להתאים אישית את ה-EditText שמוצג של תיבת הדו-שיח. לדוגמה, הגדרת אירוע סוג הקלט / אורך או הוספת TextWatcher.

  • הכתובת Preference.setCopyingEnabled() התווספה אחרי ההגדרה, לחיצה ארוכה על 'העדפה' תציג תפריט הקשר שמאפשר להעתיק את סיכום ההעדפה. אפשר להשתמש בכך כדי לאפשר העתקה של מידע סטטי, כמו מזהים ספציפיים למשתמש או פרטי גרסת האפליקציה.

  • עיצוב ההעדפות חל עכשיו על נושא הפעילות פירוש הדבר הוא שכאשר יוצרים העדפה מקוד, לא צריך יותר להשתמש בהקשר מ-PreferenceManager#getContext() - אפשר פשוט להשתמש בהקשר של מקטע/פעילות.

שינויים ב-API

  • בוצע מחדש ארגון של findPreference() כדי להחזיר <T extends Preference> המשמעות היא שאין צורך להפעיל Cast של ההעדפות באופן מפורש כשמשתמשים ב-FindPreference(). לדוגמה, EditTextPreference preference = findPreference(“edit_text”) הוא עכשיו קוד תקף.

גרסה 1.1.0-alpha01

5 בנובמבר 2018

תכונות חדשות

  • עכשיו אפשר להגדיר SummaryProvider בהעדפה, כדי להגדיר באופן דינמי סיכום בכל פעם שההעדפה מתעדכנת או הופכת לגלויה למשתמש.
  • נוספו הטמעות ברירת מחדל של SummaryProvider עבור ListPreference ו- EditTextPreference (הרשאת עריכה), כאשר הגדרה זו תעדכן באופן אוטומטי את הסיכום של העדפה לשקף את הערך השמור, או 'לא מוגדר' אם לא נשמר ערך. אפשר להגדיר את הערכים האלה באמצעות app:useSimpleSummaryProvider=”true
  • נוספה האפשרות PreferenceGroup#removePreferenceRecursivity, מוצאת ו מסיר העדפה מהקבוצה, או קבוצה בתוך קבוצה נמוכה יותר ההיררכיה.

שינויים ב-API

  • PreferenceFragment ומחלקות אחרות באמצעות Fragments של framework היו הוצא משימוש – צריך להשתמש ב-PreferenceFragmentCompat ובמחלקות תואמות אחרות במקום זאת.

תיקוני באגים

  • תיקון סמל המרחב המשותף לא פועל בצורה תקינה עם קטגוריות ההעדפות.
  • תוקנו של קטגוריות ההעדפות שלא משתמשות ב-colorAccent בצבעי הכותר שלהן מתחת ל-API 21.
  • תוקנו כמה מחוסר עקביות בפריסת ה-SeekBarPreference למטה ב-API 21.