Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.65 KB | None | 0 0
  1. Preference somePreference = findPreference(SOME_PREFERENCE_KEY);
  2. PreferenceScreen preferenceScreen = getPreferenceScreen();
  3. preferenceScreen.removePreference(somePreference);
  4.  
  5. preferenceScreen.addPreference(somePreference);
  6.  
  7. <?xml version="1.0" encoding="utf-8"?>
  8. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
  9. <CheckBoxPreference
  10. android:key="pref_sync"
  11. android:title="@string/pref_sync"
  12. android:summary="@string/pref_sync_summ"
  13. android:defaultValue="true" />
  14. <ListPreference
  15. android:dependency="pref_sync"
  16. android:key="pref_syncConnectionType"
  17. android:title="@string/pref_syncConnectionType"
  18. android:dialogTitle="@string/pref_syncConnectionType"
  19. android:entries="@array/pref_syncConnectionTypes_entries"
  20. android:entryValues="@array/pref_syncConnectionTypes_values"
  21. android:defaultValue="@string/pref_syncConnectionTypes_default" />
  22. </PreferenceScreen>
  23.  
  24. public class RemovablePreference extends Preference {
  25.  
  26. @Override
  27. protected void onBindView(View view) {
  28. super.onBindView(view);
  29.  
  30. updateVisibility(); // possibly a better place available?
  31. }
  32.  
  33. private void updateVisibility() {
  34. Context context = getContext(); // should be a PreferenceActivity
  35. if (context instanceof PreferenceActivity) {
  36. updateVisibility((PreferenceActivity)context);
  37. }
  38. }
  39.  
  40. private void updateVisibility(PreferenceActivity activity) {
  41. updateVisibility(getPreferenceScreen(activity));
  42. }
  43.  
  44. private PreferenceScreen getPreferenceScreen(PreferenceActivity activity) {
  45.  
  46. if (activity.getPreferenceScreen() != null) {
  47. return activity.getPreferenceScreen(); // for old implementations
  48. }
  49.  
  50. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
  51. Fragment fragment = activity.getFragmentManager().findFragmentById(android.R.id.content);
  52. if (fragment instanceof PreferenceFragment) {
  53. return ((PreferenceFragment) fragment).getPreferenceScreen();
  54. }
  55. }
  56. return null;
  57. }
  58.  
  59. private void updateVisibility(PreferenceScreen screen) {
  60. if (!isVisible() && screen != null) {
  61. hidePreference(screen, this);
  62. }
  63. }
  64.  
  65. private boolean hidePreference(PreferenceGroup prefGroup, Preference removedPreference) {
  66. boolean removed = false;
  67.  
  68. if (prefGroup.removePreference(removedPreference)) {
  69. removed = true;
  70. }
  71.  
  72. for (int i = 0; i < prefGroup.getPreferenceCount(); i++) {
  73. Preference preference = prefGroup.getPreference(i);
  74. if (preference instanceof PreferenceGroup) {
  75. PreferenceGroup prefGroup2 = (PreferenceGroup)preference;
  76. if (hidePreference(prefGroup2, this)) {
  77. // The whole group is now empty -> remove also the group
  78. if (prefGroup2.getPreferenceCount() == 0) {
  79. removed = true;
  80. prefGroup.removePreference(prefGroup2);
  81. }
  82. }
  83. }
  84. }
  85.  
  86. return removed;
  87. }
  88.  
  89. protected boolean isVisible() {
  90. return true; // override
  91. }
  92.  
  93. <PreferenceScreen
  94. xmlns:android="http://schemas.android.com/apk/res/android"
  95. android:key="preferenceScreen">
  96.  
  97. <PreferenceCategory
  98. android:key="personalisation"
  99. android:title="your title here">
  100.  
  101. <ThemedPreference
  102. android:key="animation" />
  103.  
  104. </PreferenceScreen>
  105.  
  106. PreferenceScreen pPreferenceScreen = (PreferenceScreen) findPreference("preferenceScreen");
  107.  
  108. PreferenceCategory pCategory = (PreferenceCategory) findPreference("personalisation");
  109. ThemedPreference pThemePref = (ThemedPreference) findPreference("animation");
  110.  
  111. pPreferenceScreen.removePreference(pCategory); //remove category
  112. pCategory.removePreference(pThemePref); // remove preference
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement