Preferenza

Crea schermate di impostazioni interattive senza dover interagire con lo spazio di archiviazione del dispositivo o gestire l'UI.
Aggiornamento più recente Release stabile Candidato per l'uscita Versione beta Release alpha
26 luglio 2023 1.2.1 - - -

Dichiarazione delle dipendenze

Per aggiungere una dipendenza alle preferenze, devi aggiungere il Repository Maven di Google al tuo progetto. Consulta il Repository Maven di Google per ulteriori informazioni.

Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per l'app o il modulo:

Alla moda

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")
}

Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze nella build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Non esitare a contattarci in caso di nuovi problemi o idee per migliorare questa raccolta. Dai un'occhiata alle problemi esistenti in questa raccolta, prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente tramite facendo clic sul pulsante a forma di stella.

Crea un nuovo numero

Consulta la documentazione di Issue Tracker per ulteriori informazioni.

Versione 1.2

Versione 1.2.1

26 luglio 2023

Viene rilasciato androidx.preference:preference:1.2.1. La versione 1.2.1 contiene questi commit.

Correzioni di bug

  • Ora PreferenceHeaderFragmentCompat gestisce correttamente il pulsante Indietro del sistema se utilizzato all'interno di un elemento ComponentDialog o quando utilizzi librerie come @AndroidEntryPoint di Hilt che aggregano Context del frammento.
  • La preferenza ora dipende dall'Attività 1.5.1. (Ie5d22).
  • PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment ora propaga header.extras come argomenti Fragment.

Versione 1.2.0

26 gennaio 2022

Vengono rilasciate le versioni androidx.preference:preference:1.2.0 e androidx.preference:preference-ktx:1.2.0. La versione 1.2.0 contiene questi commit.

Modifiche importanti dalla versione 1.1.0

  • È stata aggiunta l'PreferenceHeaderFragmentCompat per la preferenza a due riquadri che si adatta automaticamente in base alle dimensioni del dispositivo utilizzato, rendendolo adatto all'uso su smartphone, pieghevoli e tablet. Il riquadro di intestazione viene fornito eseguendo l'override del metodo onCreatePreferenceHeader() su PreferenceHeaderFragmentCompat. Qualsiasi elemento <Preference> nell'intestazione PreferenceFragmentCompat che utilizza app:fragment farà sì che il frammento venga visualizzato nel secondo riquadro dei dettagli. Il frammento di dettaglio iniziale che deve essere visualizzato prima che qualsiasi preferenza venga selezionata manualmente può essere personalizzato eseguendo l'override di onCreateInitialDetailFragment(). L'implementazione predefinita restituisce la prima preferenza con un frammento definito.
class TwoPanePreference : PreferenceHeaderFragmentCompat() {
    override fun onCreatePreferenceHeader(): PreferenceFragmentCompat {
        return PreferenceHeader()
    }
}
  • Sono state aggiunte annotazioni con nullità a molti dei API che in precedenza non specificavano @NonNull o @Nullable. Si tratta potenzialmente di una modifica che provoca un errore nel codice sorgente Kotlin, se il valore non valido che hai scelto nel codice Kotlin non corrisponde a quello attualmente definito.

  • Ora PreferenceFragmentCompat cerca le implementazioni dell'interfaccia OnPreferenceStartFragmentCallback, OnNavigateToScreenListener e OnDisplayPreferenceDialogListener sui frammenti padre prima di verificare se il contesto o l'attività di hosting implementano queste interfacce.

Versione 1.2.0-rc01

15 dicembre 2021

androidx.preference:preference:1.2.0-rc01 e androidx.preference:preference-ktx:1.2.0-rc01 vengono rilasciate senza modifiche dal giorno 1.2.0-beta01. La versione 1.2.0-rc01 contiene questi commit.

Versione 1.2.0-beta01

17 novembre 2021

androidx.preference:preference:1.2.0-beta01 e androidx.preference:preference-ktx:1.2.0-beta01 vengono rilasciati senza modifiche rispetto alla preferenza 1.2.0-alpha02. La versione 1.2.0-beta01 contiene questi commit.

Versione 1.2.0-alpha02

3 novembre 2021

Vengono rilasciate le versioni androidx.preference:preference:1.2.0-alpha02 e androidx.preference:preference-ktx:1.2.0-alpha02. La versione 1.2.0-alpha02 contiene questi commit.

Modifiche alle API

  • Sono state aggiunte annotazioni con nullità a molti dei API che in precedenza non specificavano @NonNull o @Nullable. (I04252, Ie2cc0)
  • L'API openPreference() è stata rimossa da PreferenceHeaderFragmentCompat: questo metodo è che ha chiamato per te e non deve essere chiamato manualmente. (Ia6989)

Cambiamenti del comportamento

  • Callback PreferenceFragmentCompat per OnNavigateToScreenListener e OnDisplayPreferenceDialogListener ora seguono nello stesso pattern di OnPreferenceTreeClickListener e cerca nella gerarchia dei frammenti padre ascoltatori prima di controllare se l'istanza di hosting Il contesto o l'attività implementa queste interfacce. (I7ae6c).

Versione 1.2.0-alpha01

27 ottobre 2021

Vengono rilasciate le versioni androidx.preference:preference:1.2.0-alpha01 e androidx.preference:preference-ktx:1.2.0-alpha01. La versione 1.2.0-alpha01 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto PreferenceHeaderFragmentCompat per la preferenza a due riquadri (I9a2d8)

Cambiamenti del comportamento

  • I callback delle preferenze per OnPreferenceDisplayDialogCallback, OnPreferenceStartScreenCallback e OnPreferenceStartFragmentCallback ora possono essere implementati in un contesto non di attività. getContext() viene controllato per verificare se implementa questi callback prima di controllare getActivity(). Se getContext() restituisce un'attività (il caso comune), il comportamento non cambia.

  • La chiamata di PreferenceFragmentCompat a onPreferenceTreeClick ora cerca le implementazioni dell'interfaccia OnPreferenceStartFragmentCallback sui frammenti padre prima di prendere in considerazione l'implementazione dell'attività. (c64eed)

Versione 1.1

Versione 1.1.1

15 aprile 2020

Vengono rilasciate le versioni androidx.preference:preference:1.1.1 e androidx.preference:preference-ktx:1.1.1. La versione 1.1.1 contiene questi commit.

Correzioni di bug

  • PreferenceDialogFragmentCompat non genererà più un IllegalStateException durante il gonfiaggio di un FragmentContainerView da XML. (b/150051716)

Aggiornamenti delle dipendenze

  • La preferenza ora dipende dal Frammento 1.2.4. (aosp/1277317)
  • La dipendenza preference-ktx ora dipende da androidx.core:core-ktx:1.1.0 e androidx.fragment:fragment-ktx:1.2.4, eseguendo il mirroring delle dipendenze dell'artefatto preference principale e garantendo che l'upgrade di preference-ktx aggiorni gli artefatti principali e -ktx delle dipendenze transitive. (aosp/1277319)

Versione 1.1.0

5 settembre 2019

Vengono rilasciate le versioni androidx.preference:preference:1.1.0 e androidx.preference:preference-ktx:1.1.0. I commit inclusi in questa versione sono disponibili qui.

Se questa è la prima release di 1.1.* a cui stai eseguendo l'aggiornamento, di seguito è riportato un elenco conciso delle modifiche più importanti dall'ultima release stabile, 1.0.0. Potrebbero esserti utili anche la guida alle impostazioni, l'app di esempio e le chiamate all'Android Dev Summit.

Modifiche importanti dalla versione 1.0.0

  • PreferenceFragment e altri corsi che utilizzano Frammenti del framework sono stati deprecati. dovresti usare PreferenceFragmentCompat e altre classi *compat.
  • Ora puoi impostare un SummaryProvider su una preferenza per configurarne dinamicamente il riepilogo ogni volta che la preferenza viene aggiornata o diventa visibile all'utente. Per ulteriori informazioni, consulta la guida.
  • È stata aggiunta l'interfaccia di EditTextPreference.OnBindEditTextListener. In questo modo è possibile personalizzare la EditText visualizzata nella finestra di dialogo corrispondente dopo che la finestra di dialogo è stata associata. Questa funzionalità sostituisce direttamente l'utilizzo di attributi come android:inputType direttamente in EditTextPreference, che non è supportato nella libreria AndroidX. Per ulteriori informazioni, consulta la guida.
  • Preference.setCopyingEnabled() aggiunto. Se questa impostazione è impostata, la pressione prolungata sulla preferenza mostra un menu contestuale che consente di copiare il riepilogo della preferenza.
  • Sono stati aggiornati gli stili SeekBarPreference in base alle specifiche Material. Consulta il log delle modifiche dettagliato per altre modifiche a SeekBarPreference.
  • Una grande quantità di correzioni di bug, aggiornamenti di stile, correzioni di compatibilità a livello di API e miglioramenti generali della qualità QOL.

Versione 1.1.0-rc01

2 luglio 2019

Vengono rilasciate le versioni androidx.preference:preference:1.1.0-rc01 e androidx.preference:preference-ktx:1.1.0-rc01. I commit inclusi in questa versione sono disponibili qui.

Modifiche alle API

  • Depreca Preference#onInitializeAccessibilityNodeInfo
  • Questo metodo ha inviato le informazioni sul nodo di accessibilità tramite proxy per una preferenza specifica, ma non è il livello corretto per questa personalizzazione. Se vuoi regolare le informazioni sull'accessibilità, devi invece eseguire l'override di onBindViewAspettaer e aggiungere le informazioni sull'accessibilità direttamente alla vista.

Versione 1.1.0-beta01

5 giugno 2019

Vengono rilasciate le versioni androidx.preference:preference:1.1.0-beta01 e androidx.preference:preference-ktx:1.1.0-beta01. I commit inclusi in questa versione sono disponibili qui.

Modifiche importanti dalla versione 1.1.0

Se questa è la prima release 1.1.* a cui stai eseguendo l'aggiornamento, di seguito è riportato un elenco conciso delle modifiche più importanti dall'ultima release stabile, la 1.1.0. Potrebbero esserti utili anche la guida alle impostazioni, l'app di esempio e le chiamate all'Android Dev Summit.

  • PreferenceFragment e altre classi che utilizzano il framework Fragments sono state ritirate. Dovresti usare PreferenceFragmentCompat e altre classi *compat.
  • Ora puoi impostare un SummaryProvider su una Preference per configurarne dinamicamente il riepilogo ogni volta che la preferenza viene aggiornata o diventa visibile all'utente. Per ulteriori informazioni, consulta la guida.
  • È stata aggiunta l'interfaccia di EditTextPreference.OnBindEditTextListener. Ciò consente di personalizzare l'EditText visualizzato nella finestra di dialogo corrispondente dopo che la finestra di dialogo è stata associata. Questa funzionalità sostituisce direttamente l'uso di attributi come android:inputType direttamente in EditTextPreference, che non è supportato nella libreria AndroidX. Per ulteriori informazioni, consulta la guida.
  • Preference.setCopyingEnabled() aggiunto. Se questa impostazione è impostata, la pressione prolungata sulla preferenza mostra un menu contestuale che consente di copiare il riepilogo della preferenza.
  • Stile SeekBarPreference aggiornato in modo che corrisponda alle specifiche Material. Consulta il log delle modifiche dettagliato per altre modifiche a SeekBarPreference.
  • Una grande quantità di correzioni di bug, aggiornamenti di stile, correzioni di compatibilità a livello di API e miglioramenti generali della qualità QOL.

Modifiche all'API dalla versione 1.1.0-alpha05

  • Rimuove getOnBindEditTextListener dall'API pubblica. Dovresti usare setOnBindEditTextListener solo quando interagisci con questa API.

Segnala eventuali bug qui se riscontri problemi o hai dei suggerimenti per nuove funzionalità.

Versione 1.1.0-alpha05

7 maggio 2019

Vengono rilasciate le versioni androidx.preference:preference:1.1.0-alpha05 e androidx.preference:preference-ktx:1.1.0-alpha05. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • Stile aggiornato per le preferenze non selezionabili: il titolo e il riepilogo ora condividono lo stesso colore per chiarire che non è possibile interagire e sono utilizzati solo per la visualizzazione delle informazioni.
  • Nota: ti consigliamo di aggiungere enableCopying="true" alle preferenze non selezionabili, così puoi premere a lungo per copiare il riepilogo.

Correzioni di bug

  • È stato corretto un problema di regressione in cui PreferenceCategory e altre preferenze non selezionabili avevano un effetto a onde se selezionate
  • Risolto un problema di accessibilità per cui TalkBack non vedeva il menu a discesa selezionabile
  • Sono stati risolti alcuni problemi di layout RTL
  • Sono state aggiornate alcune annotazioni con valori null in PreferenceFragmentCompat in modo che corrispondano a Fragment

Versione 1.1.0-alpha04

13 marzo 2019

Vengono rilasciate le versioni androidx.preference:preference:1.1.0-alpha04 e androidx.preference:preference-ktx:1.1.0-alpha04. L'elenco completo dei commit inclusi in questa versione è disponibile qui.

Nuove funzionalità

Aggiornamento di SeekBarPreference.

  • Stile aggiornato in base alle specifiche dei materiali
    • L'etichetta del valore ora è nascosta per impostazione predefinita, anche se può ancora essere visualizzata con app:showSeekBarValue="true" o setShowSeekBarValue(true). Questa etichetta non fa parte della specifica Material, ma siamo consapevoli del fatto che è molto utilizzata, quindi continueremo a supportarla, anche se sconsigliamo di utilizzarla.
    • L'etichetta del valore ora viene aggiornata durante il trascinamento della barra SeekBar, anziché quando viene rilasciata. Tieni presente che questo non significa che il valore viene aggiornato internamente. Vedi di seguito per una nuova API che abilita questa funzionalità.
    • Nota: sebbene sia supportato, dovresti evitare di impostare un riassunto su una SeekBarPreference, perché non è intenzionale e non fa parte della specifica Material.
  • Aggiunge il supporto di aggiornamenti continui, consentendo a SeekBar di aggiornare il suo valore salvato mentre la SeekBar viene trascinata. Può essere attivato da XML o in modo programmatico, con app:updatesContinuously="true" o setUpdatesContinuously(true). Si attiva ogni volta che la posizione del SeekBar sullo schermo cambia.

Modifiche alle API

  • Aggiunge a findPreference() annotazioni con valore nullo mancanti

Correzioni di bug

  • È stato corretto un bug per cui i listener del menu contestuale non venivano rimossi correttamente se la copia non è abilitata

Versione 1.1.0-alpha03

7 febbraio 2019

androidx.preference:preference 1.1.0-alpha03

androidx.preference:preference 1.1.0-alpha03 e androidx.preference:preference-ktx 1.1.0-alpha03 vengono rilasciati con le modifiche successive.

Correzioni di bug

  • Risolto un problema per cui il popup di copia/incolla a volte non veniva visualizzato nella finestra di dialogo di EditTextPreference
  • Risolto un problema per cui la registrazione dell'adattatore sottostante non veniva annullata correttamente, con conseguenti perdite di memoria in condizioni specifiche (b/121006469)
  • Sono stati corretti alcuni arresti anomali relativi alle finestre di dialogo che si verificavano durante la modifica della configurazione (b/122167543)
  • È stato corretto il metodo SummaryProvider non funzionante per MultiSelectListPreference (b/123022772)

Versione 1.1.0-alpha02

17 dicembre 2018

Consulta anche Guida alle impostazioni aggiornata di recente ed esempio .

Nuove funzionalità

  • Aggiunta l'interfaccia EditTextPreference.OnBindEditTextListener Ciò consente di personalizzare l'EditText visualizzato nei Dopo che la finestra di dialogo è stata associata. Ad esempio, l'impostazione di un'istanza un tipo di input / lunghezza o l'aggiunta di un TextWatcher.

  • Data di aggiunta: Preference.setCopyingEnabled() Se questa impostazione è impostata, premi a lungo sulla Preferenza per mostrare un menu contestuale che consente di copiare il riepilogo della preferenza. Questa opzione può essere utilizzata per consentire la copia di informazioni statiche, quali gli ID specifici degli utenti e le informazioni sulla versione dell'applicazione.

  • Il tema preferenze è ora applicato al tema delle attività Ciò significa che quando crei una preferenza dal codice, non devi più utilizzare il contesto di PreferenceManager#getContext(): puoi semplicemente utilizzare il contesto Frammento/Attività.

Modifiche alle API

  • Eseguito refactoring di findPreference() per restituire <T extends Preference> Ciò significa che non è necessario trasmettere esplicitamente le preferenze quando usi searchPreference(). Ad esempio: EditTextPreference preference = findPreference(“edit_text”) ora è un codice valido.

Versione 1.1.0-alpha01

5 novembre 2018

Nuove funzionalità

  • Ora puoi impostare un SummaryProvider su una Preference per configurarne in modo dinamico il relativo riepilogo ogni volta che la preferenza viene aggiornata o diventa visibile all'utente.
  • Sono state aggiunte le implementazioni di riepilogo predefinite per ListPreference e EditTextPreference, che, una volta impostato, aggiornerà automaticamente il riepilogo del Preferenza affinché rifletta il valore salvato o "Non impostato" se non è stato salvato alcun valore. Possono essere impostati con app:useSimpleSummaryProvider="true"
  • È stato aggiunto PreferenceGroup#removePreferenceRecurssive, che individua e rimuove una preferenza dal gruppo oppure un gruppo nidificato più in basso nella gerarchia.

Modifiche alle API

  • PreferenceFragment e altre classi che usano il framework Fragments sono state deprecato: devi utilizzare PreferenceFragmentCompat e altre classi compat .

Correzioni di bug

  • È stato corretto il problema di iconSpaceConfidential con il funzionamento non corretto con PreferenceCategories.
  • Correggi PreferenceCategories che non utilizzava colorAccent per il colore del titolo inferiore all'API 21.
  • Sono state corrette alcune incoerenze del layout di SeekBarPreference relative all'API 21.