diff --git a/sdk/src/java/lineageos/preference/ConstraintsHelper.java b/sdk/src/java/lineageos/preference/ConstraintsHelper.java index 35e1d5d1..b48b00ee 100644 --- a/sdk/src/java/lineageos/preference/ConstraintsHelper.java +++ b/sdk/src/java/lineageos/preference/ConstraintsHelper.java @@ -300,7 +300,7 @@ public class ConstraintsHelper { return fallbackAttr; } - public void onBindViewHolder(PreferenceViewHolder holder) { + public void onAttached() { checkIntent(); if (isAvailable() && mReplacesKey != null) { @@ -308,7 +308,9 @@ public class ConstraintsHelper { } Graveyard.get(mContext).summonReaper(mPref.getPreferenceManager()); + } + public void onBindViewHolder(PreferenceViewHolder holder) { if (!isAvailable()) { return; } @@ -325,7 +327,7 @@ public class ConstraintsHelper { * If we want to keep this at the preference level vs the fragment level, we need to * collate all the preferences that need to be removed when attached to the * hierarchy, then purge them all when loading is complete. The Graveyard keeps track - * of this, and will reap the dead during the first call to onBindViewHolder. + * of this, and will reap the dead when onAttached is called. */ private static class Graveyard { @@ -370,20 +372,12 @@ public class ConstraintsHelper { return null; } - private void removePreference(PreferenceManager mgr, Preference pref) { - final PreferenceGroup group = getParent(pref, pref); - group.removePreference(pref); - if (group.getPreferenceCount() == 0) { - getParent(pref, group).removePreference(group); - } - } - public void summonReaper(PreferenceManager mgr) { synchronized (mDeathRow) { for (String dead : mDeathRow) { Preference deadPref = mgr.findPreference(dead); if (deadPref != null) { - removePreference(mgr, deadPref); + deadPref.setVisible(false); } } mDeathRow.clear(); diff --git a/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java index 76e73461..03097cfe 100644 --- a/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java +++ b/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java @@ -43,6 +43,12 @@ public class SelfRemovingDropDownPreference extends DropDownPreference { mConstraints = new ConstraintsHelper(context, null, this); } + @Override + public void onAttached() { + super.onAttached(); + mConstraints.onAttached(); + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); diff --git a/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java index d1d3ec5a..0b8c7985 100644 --- a/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java +++ b/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java @@ -43,6 +43,12 @@ public class SelfRemovingListPreference extends ListPreference { mConstraints = new ConstraintsHelper(context, null, this); } + @Override + public void onAttached() { + super.onAttached(); + mConstraints.onAttached(); + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); diff --git a/sdk/src/java/lineageos/preference/SelfRemovingPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingPreference.java index a148a09c..5271f561 100644 --- a/sdk/src/java/lineageos/preference/SelfRemovingPreference.java +++ b/sdk/src/java/lineageos/preference/SelfRemovingPreference.java @@ -48,6 +48,12 @@ public class SelfRemovingPreference extends Preference { this(context, null); } + @Override + public void onAttached() { + super.onAttached(); + mConstraints.onAttached(); + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); diff --git a/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java index c8663227..a637f220 100644 --- a/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java +++ b/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java @@ -43,6 +43,12 @@ public class SelfRemovingSwitchPreference extends SwitchPreference { mConstraints = new ConstraintsHelper(context, null, this); } + @Override + public void onAttached() { + super.onAttached(); + mConstraints.onAttached(); + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder);