[Catalyst] Rebind preference immediately when restriction is changed

Bug: 377600992
Flag: com.android.settings.flags.catalyst
Test: testdpc
Change-Id: Iee382afb8395355ee77d604bd399972326557cc0
This commit is contained in:
Jacky Wang
2024-11-08 14:55:11 +08:00
parent 2f42a85719
commit bb9cc08172
3 changed files with 169 additions and 0 deletions

View File

@@ -48,11 +48,13 @@ import com.android.settings.core.CategoryMixin.CategoryListener;
import com.android.settings.core.PreferenceControllerListHelper;
import com.android.settings.flags.Flags;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.restriction.UserRestrictionBindingHelper;
import com.android.settingslib.PrimarySwitchPreference;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.Tile;
import com.android.settingslib.preference.PreferenceScreenBindingHelper;
import com.android.settingslib.preference.PreferenceScreenCreator;
import com.android.settingslib.search.Indexable;
@@ -92,6 +94,8 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
private boolean mListeningToCategoryChange;
private List<String> mSuppressInjectedTileKeys;
private @Nullable UserRestrictionBindingHelper mUserRestrictionBindingHelper;
@Override
public void onAttach(Context context) {
super.onAttach(context);
@@ -178,6 +182,13 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
// editing dialog is recreated (that would happen before onResume is called).
updatePreferenceStates();
}
if (isCatalystEnabled()) {
PreferenceScreenBindingHelper helper = getPreferenceScreenBindingHelper();
if (helper != null) {
mUserRestrictionBindingHelper = new UserRestrictionBindingHelper(requireContext(),
helper);
}
}
}
@Override
@@ -288,6 +299,15 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
}
}
@Override
public void onDestroy() {
if (mUserRestrictionBindingHelper != null) {
mUserRestrictionBindingHelper.close();
mUserRestrictionBindingHelper = null;
}
super.onDestroy();
}
@Override
protected final int getPreferenceScreenResId(@NonNull Context context) {
return getPreferenceScreenResId();