Merge "Recursively remove preference from screen." into oc-dev

am: 7731b4244e

Change-Id: Ib3c637bcb4bbd6ded83f626b1b00dff32f9cb12c
This commit is contained in:
Fan Zhang
2017-05-25 03:25:43 +00:00
committed by android-build-merger
2 changed files with 134 additions and 4 deletions

View File

@@ -26,6 +26,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.VisibleForTesting;
import android.support.annotation.XmlRes;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup;
@@ -423,11 +424,28 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
return -1;
}
protected void removePreference(String key) {
Preference pref = findPreference(key);
if (pref != null) {
getPreferenceScreen().removePreference(pref);
protected boolean removePreference(String key) {
return removePreference(getPreferenceScreen(), key);
}
@VisibleForTesting
boolean removePreference(PreferenceGroup group, String key) {
final int preferenceCount = group.getPreferenceCount();
for (int i = 0; i < preferenceCount; i++) {
final Preference preference = group.getPreference(i);
final String curKey = preference.getKey();
if (TextUtils.equals(curKey, key)) {
return group.removePreference(preference);
}
if (preference instanceof PreferenceGroup) {
if (removePreference((PreferenceGroup) preference, key)) {
return true;
}
}
}
return false;
}
/**