Подтвердить что ты не робот

Программно заполняющие предпочтения с помощью флажков

На моей странице настроек у меня есть предпочтение, которое извлекает список переключаемых параметров, которые я хотел бы отображать как индивидуальные настройки флажка.

Я знаю, что preferences.xml поддерживает создание списков предпочтений (просмотр страницы настроек wi-fi), но ListPreference позволяет выбрать только один из списка.

Я искал способ создания предпочтений программным способом, но мне удалось найти способ изменения атрибутов предпочтений, уже находящихся в XML.

4b9b3361

Ответ 1

Вот краткий пример (предполагая, что вы расширяете PreferenceActivity):

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(this);

    PreferenceCategory category = new PreferenceCategory(this);
    category.setTitle("category name");

    screen.addPreference(category);

    CheckBoxPreference checkBoxPref = new CheckBoxPreference(this);
    checkBoxPref.setTitle("title");
    checkBoxPref.setSummary("summary");
    checkBoxPref.setChecked(true);

    category.addPreference(checkBoxPref);
    setPreferenceScreen(screen);
}

Ответ 2

Программно добавить предпочтение с другими настройками в файле xml: Другие решения не работали для меня, потому что у меня также был xml с предпочтениями. Я не уверен, что все эти вызовы являются необходимыми/избыточными, но это работает.

onCreate() метод, класс extends PreferenceActivity:

setContentView(R.layout.preferences);
addPreferencesFromResource(R.xml.preferences);

PreferenceScreen pScreen = getPreferenceManager().createPreferenceScreen(this);     
CheckBoxPreference cb = new CheckBoxPreference(this);
cb.setKey("cb");
cb.setTitle("BLAH");
cb.setOrder(99);        //not working...
pScreen.addPreference(cb);

setPreferenceScreen(pScreen);
addPreferencesFromResource(R.xml.preferences);

Sidenote: так как мне нужно было создать динамический список флажков, он лучше всего подходит внутри внутреннего PreferenceScreen. Поэтому я создал этот PreferenceScreen внутри xml, а затем динамически генерировал флажки внутри этого. Таким образом, упорядочение не имело значения, так как все флажки "new" dynamic были внутри этого экрана.