Должен ли Custom PreferenceActivity определять список - PullRequest
2 голосов
/ 15 ноября 2010

Нужно ли настраиваемой PreferenceActivity определять список?

Если я не определяю список как часть моего содержимого, связанного с моей настраиваемой PreferenceActivity, я получаю следующую исключительную ситуацию RuntimeException:

Ваше содержимое должно иметь ListView с атрибутом id 'android.R.id.list'

Я пытаюсь создать пользовательскую PreferenceActivity, которая показывает два списка:

  1. Один список, который добавляет выбор к другому списку
  2. Один список, который позволяет пользователю перемещать элементы вверх или вниз или удалять их (возможно, с помощью контекстного меню)

Чтотакое "предпочтительный" способ сделать это?

Спасибо, wTs

Ответы [ 3 ]

1 голос
/ 01 февраля 2011

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

setContentView (layoutId); ...

use: addPreferencesFromResource (layoutId); вместо этого.

и вы можете пропустить шаги, описанные 'Peter Knego', и можете напрямую использовать настройки без добавления списка.

1 голос
/ 15 ноября 2010

PreferenceActivity расширяет ListActivity, поэтому я предполагаю, что для этого нужен List.

Когда я не понимаю вещи, мой предпочтительный способ - использовать Source®: PreferenceActivity

Отредактировано:

Я бы выбрал такой подход:

  1. Скопируйте PreferenceActivity в новый класс.

  2. Создайте свой собственный макет для своей деятельности (посмотрите на ListActivity docs ). Добавьте второй ListView к нему.

  3. Убедитесь, что все работает как оригинальная PreferenceActivity.

  4. Начните добавлять код для второго ListView.

0 голосов
/ 29 декабря 2012

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

public void onCreate(Bundle savedInstanceState) {

     addPreferencesFromResource(R.xml.preferences);
     PreferenceScreen preference;
     preferenceScreen = getPreferenceScreen();
     PreferenceScreen new_preference = new Preference(this);
     new_preference.setKey("unique_key");
     new_preference.setTitle("new_title");
     preferenceSreen.addPreference(new_preference);
}
...