Loading packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBindings.kt +1 −1 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ interface PreferenceScreenBinding : PreferenceBinding { context.getString(screenTitle) } else { screenMetadata.getScreenTitle(context) ?: (this as? PreferenceTitleProvider)?.getTitle(context) ?: (screenMetadata as? PreferenceTitleProvider)?.getTitle(context) } } } Loading packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceFragment.kt +16 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.content.Intent import android.os.Bundle import android.util.Log import androidx.annotation.XmlRes import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceScreen import com.android.settingslib.metadata.EXTRA_BINDING_SCREEN_KEY import com.android.settingslib.metadata.PreferenceScreenBindingKeyProvider Loading @@ -38,6 +39,11 @@ open class PreferenceFragment : preferenceScreen = createPreferenceScreen() } override fun setPreferenceScreen(preferenceScreen: PreferenceScreen?) { super.setPreferenceScreen(preferenceScreen) updateActivityTitle() } fun createPreferenceScreen(): PreferenceScreen? = createPreferenceScreen(PreferenceScreenFactory(this)) Loading Loading @@ -102,9 +108,19 @@ open class PreferenceFragment : override fun onResume() { super.onResume() // Even when activity has several fragments with preference screen, this will keep activity // title in sync when fragment manager pops back stack. updateActivityTitle() preferenceScreenBindingHelper?.onResume() } internal fun updateActivityTitle() { if (!lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED)) return val activity = activity ?: return val title = preferenceScreen?.title ?: return if (activity.title != title) activity.title = title } override fun onPause() { preferenceScreenBindingHelper?.onPause() super.onPause() Loading packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt +4 −2 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ import com.google.common.collect.ImmutableMultimap */ class PreferenceScreenBindingHelper( context: Context, fragment: PreferenceFragment, private val fragment: PreferenceFragment, private val preferenceBindingFactory: PreferenceBindingFactory, private val preferenceScreen: PreferenceScreen, private val preferenceHierarchy: PreferenceHierarchy, Loading Loading @@ -156,7 +156,9 @@ class PreferenceScreenBindingHelper( // bind preference to update UI preferenceScreen.findPreference<Preference>(key)?.let { preferences[key]?.let { node -> preferenceBindingFactory.bind(it, node) } val node = preferences[key] ?: return@let preferenceBindingFactory.bind(it, node) if (it == preferenceScreen) fragment.updateActivityTitle() } // check reason to avoid potential infinite loop Loading Loading
packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBindings.kt +1 −1 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ interface PreferenceScreenBinding : PreferenceBinding { context.getString(screenTitle) } else { screenMetadata.getScreenTitle(context) ?: (this as? PreferenceTitleProvider)?.getTitle(context) ?: (screenMetadata as? PreferenceTitleProvider)?.getTitle(context) } } } Loading
packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceFragment.kt +16 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.content.Intent import android.os.Bundle import android.util.Log import androidx.annotation.XmlRes import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceScreen import com.android.settingslib.metadata.EXTRA_BINDING_SCREEN_KEY import com.android.settingslib.metadata.PreferenceScreenBindingKeyProvider Loading @@ -38,6 +39,11 @@ open class PreferenceFragment : preferenceScreen = createPreferenceScreen() } override fun setPreferenceScreen(preferenceScreen: PreferenceScreen?) { super.setPreferenceScreen(preferenceScreen) updateActivityTitle() } fun createPreferenceScreen(): PreferenceScreen? = createPreferenceScreen(PreferenceScreenFactory(this)) Loading Loading @@ -102,9 +108,19 @@ open class PreferenceFragment : override fun onResume() { super.onResume() // Even when activity has several fragments with preference screen, this will keep activity // title in sync when fragment manager pops back stack. updateActivityTitle() preferenceScreenBindingHelper?.onResume() } internal fun updateActivityTitle() { if (!lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED)) return val activity = activity ?: return val title = preferenceScreen?.title ?: return if (activity.title != title) activity.title = title } override fun onPause() { preferenceScreenBindingHelper?.onPause() super.onPause() Loading
packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt +4 −2 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ import com.google.common.collect.ImmutableMultimap */ class PreferenceScreenBindingHelper( context: Context, fragment: PreferenceFragment, private val fragment: PreferenceFragment, private val preferenceBindingFactory: PreferenceBindingFactory, private val preferenceScreen: PreferenceScreen, private val preferenceHierarchy: PreferenceHierarchy, Loading Loading @@ -156,7 +156,9 @@ class PreferenceScreenBindingHelper( // bind preference to update UI preferenceScreen.findPreference<Preference>(key)?.let { preferences[key]?.let { node -> preferenceBindingFactory.bind(it, node) } val node = preferences[key] ?: return@let preferenceBindingFactory.bind(it, node) if (it == preferenceScreen) fragment.updateActivityTitle() } // check reason to avoid potential infinite loop Loading