AFAIK, для предпочтений нет опции «видимости», что имеет смысл, когда вы думаете, что это всего лишь ListView.
См. [ 1 ]. Для того, что я вижу, вы можете сделать что-то вроде этого:
PreferenceScreen screen = this.getPreferenceScreen();
// Use "1" since you're using "1" to create it.
CheckBoxPreference ckbox = (CheckBoxPreference) this.findPreference("1");
screen.removePreference(ckbox);
Чтобы воссоздать, вы можете сделать это [ 2 ]:
screen.addPreference(ckbox);
Кроме того, не забудьте создать свое предпочтение, используя setOrder(int order)
, чтобы при повторном создании оно было воссоздано в правильном положении.
Как видите, возможно, стоит сохранить глобальную ссылку на предпочтение, чтобы сделать его проще и быстрее.
Конечно, мне не нужно говорить, что вы должны интегрировать эту логику в ваш прослушиватель CheckboxPreference. Посмотрите этот ответ никем иным, как самим Рето Мейером, чтобы увидеть хороший способ сделать это (это тоже флажок). Там он регистрирует слушателя на весь экран и проверяет, какое предпочтение вызвало слушателя, но вы можете сделать это проще (но более подробным позже), просто установив его setOnPreferenceChangeListener
.
* edit: я вижу, что вы также используете кнопку, чтобы добавить предпочтение. Вы также можете реализовать ту же логику выше в самой кнопке. Все зависит от того, хотите ли вы сделать это с помощью флажка или кнопки.
Наконец, возможно, стоит просто установить включенное состояние, если только вы не делаете что-то вроде «увидеть расширенные настройки» или что-то, что не позволяет начинающим пользователям избегать опасных действий с вашим приложением. Но в целом состояния включения работают лучше для взаимодействия с пользователем, ИМХО.
Надеюсь, это ответит на ваш вопрос.