public final class

PreferenceScreen

extends PreferenceGroup

 java.lang.Object

androidx.preference.Preference

androidx.preference.PreferenceGroup

↳androidx.preference.PreferenceScreen

Gradle dependencies

compile group: 'androidx.preference', name: 'preference', version: '1.2.0'

  • groupId: androidx.preference
  • artifactId: preference
  • version: 1.2.0

Artifact androidx.preference:preference:1.2.0 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.preference:preference com.android.support:preference-v7

Androidx class mapping:

androidx.preference.PreferenceScreen android.support.v7.preference.PreferenceScreen

Overview

A top-level container that represents a settings screen. This is the root component of your Preference hierarchy. A PreferenceFragmentCompat points to an instance of this class to show the preferences. To instantiate this class, use PreferenceManager.createPreferenceScreen(Context).

Developer Guides

For information about building a settings screen using the AndroidX Preference library, see Settings.

Summary

Fields
from PreferenceDEFAULT_ORDER
Constructors
publicPreferenceScreen(Context context, AttributeSet attrs)

Do NOT use this constructor, use PreferenceManager.createPreferenceScreen(Context).

Methods
protected booleanisOnSameScreenAsChildren()

Whether this preference group should be shown on the same screen as its contained preferences.

protected voidonClick()

Processes a click on the preference.

public voidsetShouldUseGeneratedIds(boolean shouldUseGeneratedIds)

Set whether the adapter created for this screen should attempt to use the preference IDs generated by PreferenceGroup.addPreference(Preference) as stable item IDs.

public booleanshouldUseGeneratedIds()

See PreferenceScreen.setShouldUseGeneratedIds(boolean)

from PreferenceGroupaddItemFromInflater, addPreference, dispatchRestoreInstanceState, dispatchSaveInstanceState, findPreference, getInitialExpandedChildrenCount, getOnExpandButtonClickListener, getPreference, getPreferenceCount, isAttached, isOrderingAsAdded, notifyDependencyChange, onAttached, onDetached, onPrepareAddPreference, onRestoreInstanceState, onSaveInstanceState, removeAll, removePreference, removePreferenceRecursively, setInitialExpandedChildrenCount, setOnExpandButtonClickListener, setOrderingAsAdded
from PreferencecallChangeListener, compareTo, findPreferenceInHierarchy, getContext, getDependency, getExtras, getFragment, getIcon, getIntent, getKey, getLayoutResource, getOnPreferenceChangeListener, getOnPreferenceClickListener, getOrder, getParent, getPersistedBoolean, getPersistedFloat, getPersistedInt, getPersistedLong, getPersistedString, getPersistedStringSet, getPreferenceDataStore, getPreferenceManager, getSharedPreferences, getShouldDisableView, getSummary, getSummaryProvider, getTitle, getWidgetLayoutResource, hasKey, isCopyingEnabled, isEnabled, isIconSpaceReserved, isPersistent, isSelectable, isShown, isSingleLineTitle, isVisible, notifyChanged, notifyHierarchyChanged, onAttachedToHierarchy, onAttachedToHierarchy, onBindViewHolder, onDependencyChanged, onGetDefaultValue, onInitializeAccessibilityNodeInfo, onParentChanged, onPrepareForRemoval, onSetInitialValue, onSetInitialValue, peekExtras, performClick, performClick, persistBoolean, persistFloat, persistInt, persistLong, persistString, persistStringSet, restoreHierarchyState, saveHierarchyState, setCopyingEnabled, setDefaultValue, setDependency, setEnabled, setFragment, setIcon, setIconSpaceReserved, setIntent, setKey, setLayoutResource, setOnPreferenceChangeListener, setOnPreferenceClickListener, setOrder, setPersistent, setPreferenceDataStore, setSelectable, setShouldDisableView, setSingleLineTitle, setSummary, setSummary, setSummaryProvider, setTitle, setTitle, setViewId, setVisible, setWidgetLayoutResource, shouldDisableDependents, shouldPersist, toString
from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructors

public PreferenceScreen(Context context, AttributeSet attrs)

Do NOT use this constructor, use PreferenceManager.createPreferenceScreen(Context). Used by Settings :)

Methods

protected void onClick()

Processes a click on the preference. This includes saving the value to the SharedPreferences. However, the overridden method should call Preference.callChangeListener(Object) to make sure the client wants to update the preference's state with the new value.

protected boolean isOnSameScreenAsChildren()

Whether this preference group should be shown on the same screen as its contained preferences.

Returns:

true if the contained preferences should be shown on the same screen as this preference.

public boolean shouldUseGeneratedIds()

See PreferenceScreen.setShouldUseGeneratedIds(boolean)

Returns:

true if the adapter should use the preference IDs generated by PreferenceGroup.addPreference(Preference) as stable item IDs.

public void setShouldUseGeneratedIds(boolean shouldUseGeneratedIds)

Set whether the adapter created for this screen should attempt to use the preference IDs generated by PreferenceGroup.addPreference(Preference) as stable item IDs. Setting this to false can suppress unwanted animations if Preference objects are frequently removed from and re-added to their containing PreferenceGroup.

This method may only be called when the preference screen is not attached to the hierarchy.

Default value is true.

Parameters:

shouldUseGeneratedIds: true if the adapter should use the preference ID as a stable ID, or false to disable the use of stable IDs.

Source

/*
 * Copyright 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.preference;

import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;

import android.content.Context;
import android.util.AttributeSet;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.core.content.res.TypedArrayUtils;

/**
 * A top-level container that represents a settings screen. This is the root component of your
 * {@link Preference} hierarchy. A {@link PreferenceFragmentCompat} points to an instance of this
 * class to show the preferences. To instantiate this class, use
 * {@link PreferenceManager#createPreferenceScreen(Context)}.
 *
 * <div class="special reference">
 * <h3>Developer Guides</h3>
 * <p>For information about building a settings screen using the AndroidX Preference library, see
 * <a href="{@docRoot}guide/topics/ui/settings.html">Settings</a>.</p>
 * </div>
 *
 */
public final class PreferenceScreen extends PreferenceGroup {

    private boolean mShouldUseGeneratedIds = true;

    /**
     * Do NOT use this constructor, use {@link PreferenceManager#createPreferenceScreen(Context)}.
     *
     * Used by Settings :)
     *
     * @hide
     */
    @RestrictTo(LIBRARY_GROUP_PREFIX)
    public PreferenceScreen(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs, TypedArrayUtils.getAttr(context, R.attr.preferenceScreenStyle,
                android.R.attr.preferenceScreenStyle));
    }

    @Override
    protected void onClick() {
        if (getIntent() != null || getFragment() != null || getPreferenceCount() == 0) {
            return;
        }
        final PreferenceManager.OnNavigateToScreenListener listener =
                getPreferenceManager().getOnNavigateToScreenListener();
        if (listener != null) {
            listener.onNavigateToScreen(this);
        }
    }

    @Override
    protected boolean isOnSameScreenAsChildren() {
        return false;
    }

    /**
     * See {@link #setShouldUseGeneratedIds(boolean)}
     *
     * @return {@code true} if the adapter should use the preference IDs generated by
     * {@link PreferenceGroup#addPreference(Preference)} as stable item IDs.
     */
    public boolean shouldUseGeneratedIds() {
        return mShouldUseGeneratedIds;
    }

    /**
     * Set whether the adapter created for this screen should attempt to use the preference IDs
     * generated by {@link PreferenceGroup#addPreference(Preference)} as stable item IDs. Setting
     * this to false can suppress unwanted animations if {@link Preference} objects are frequently
     * removed from and re-added to their containing {@link PreferenceGroup}.
     *
     * <p>This method may only be called when the preference screen is not attached to the
     * hierarchy.
     *
     * <p>Default value is {@code true}.
     *
     * @param shouldUseGeneratedIds {@code true} if the adapter should use the preference ID as a
     *                              stable ID, or {@code false} to disable the use of
     *                              stable IDs.
     */
    public void setShouldUseGeneratedIds(boolean shouldUseGeneratedIds) {
        if (isAttached()) {
            throw new IllegalStateException("Cannot change the usage of generated IDs while" +
                    " attached to the preference hierarchy");
        }
        mShouldUseGeneratedIds = shouldUseGeneratedIds;
    }
}