Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce7f4789 authored by Jacky Wang's avatar Jacky Wang Committed by Android (Google) Code Review
Browse files

Merge "[Catalyst] Cache PreferenceFragment.getPreferenceScreenCreator" into main

parents 984bc5be 3a5ee2c4
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -34,6 +34,9 @@ import com.android.settingslib.widget.SettingsBasePreferenceFragment
open class PreferenceFragment :
    SettingsBasePreferenceFragment(), PreferenceScreenProvider, PreferenceScreenBindingKeyProvider {

    private var preferenceScreenCreator: PreferenceScreenCreator? = null
    private var preferenceScreenCreatorInitialized = false

    protected var preferenceScreenBindingHelper: PreferenceScreenBindingHelper? = null

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
@@ -89,13 +92,19 @@ open class PreferenceFragment :
    /** Returns the xml resource to create preference screen. */
    @XmlRes protected open fun getPreferenceScreenResId(context: Context): Int = 0

    protected fun getPreferenceScreenCreator(context: Context): PreferenceScreenCreator? =
    protected fun getPreferenceScreenCreator(context: Context): PreferenceScreenCreator? {
        if (preferenceScreenCreatorInitialized) return preferenceScreenCreator
        preferenceScreenCreatorInitialized = true
        val screenCreator =
            (PreferenceScreenRegistry.create(
                    context,
                    getPreferenceScreenBindingKey(context),
                    getPreferenceScreenBindingArgs(context),
                ) as? PreferenceScreenCreator)
                ?.run { if (isFlagEnabled(context)) this else null }
        preferenceScreenCreator = screenCreator
        return screenCreator
    }

    override fun getPreferenceScreenBindingKey(context: Context): String? =
        arguments?.getString(EXTRA_BINDING_SCREEN_KEY)