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

Commit 2715b6e3 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[Catalyst] Provide FragmentManager for PreferenceLifecycleContext" into main

parents 9395fce7 5d34df8c
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.os.Bundle
import androidx.activity.result.ActivityResultCallback
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContract
import androidx.fragment.app.FragmentManager
import com.android.settingslib.datastore.KeyValueStore
import kotlinx.coroutines.CoroutineScope

@@ -150,6 +151,22 @@ abstract class PreferenceLifecycleContext(context: Context) : ContextWrapper(con
     */
    abstract val lifecycleScope: CoroutineScope

    /**
     * Return the [FragmentManager] for interacting with fragments associated with current
     * fragment's activity.
     *
     * @see [androidx.fragment.app.Fragment.getParentFragmentManager]
     */
    abstract val fragmentManager: FragmentManager

    /**
     * Return a private `FragmentManager` for placing and managing Fragments inside of current
     * Fragment.
     *
     * @see [androidx.fragment.app.Fragment.getChildFragmentManager]
     */
    abstract val childFragmentManager: FragmentManager

    /** Returns the preference widget object associated with given key. */
    abstract fun <T> findPreference(key: String): T?

+8 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.Intent
import android.os.Bundle
import androidx.activity.result.ActivityResultCallback
import androidx.activity.result.contract.ActivityResultContract
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.LifecycleCoroutineScope
import androidx.lifecycle.lifecycleScope
import androidx.preference.Preference
@@ -66,6 +67,12 @@ class PreferenceScreenBindingHelper(
            override val lifecycleScope: LifecycleCoroutineScope
                get() = fragment.lifecycleScope

            override val fragmentManager: FragmentManager
                get() = fragment.parentFragmentManager

            override val childFragmentManager: FragmentManager
                get() = fragment.childFragmentManager

            override fun <T> findPreference(key: String) =
                preferenceScreen.findPreference(key) as T?

@@ -86,7 +93,7 @@ class PreferenceScreenBindingHelper(

            override fun <I, O> registerForActivityResult(
                contract: ActivityResultContract<I, O>,
                callback: ActivityResultCallback<O>
                callback: ActivityResultCallback<O>,
            ) = fragment.registerForActivityResult(contract, callback)
        }