Программно заполнить настройки флажками - PullRequest
20 голосов
/ 25 мая 2011

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

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

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

Ответы [ 2 ]

46 голосов
/ 25 мая 2011

Вот краткий пример (если вы расширяете 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);
}
1 голос
/ 18 января 2015

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

метод onCreate (), класс расширяет 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, а затем динамически сгенерировал флажки внутри него. Таким образом, порядок не имел значения, так как все «новые» флажки Dynamica были внутри этого экрана.

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