2010-03-19 3 views
3

Мое приложение используется на нескольких платформах, поэтому оно сохраняет его предпочтения в файле (а не стандартном Android SharedPreferences).Как сохранить предпочтения где-то, кроме SharedPreferences

Есть ли возможность повторного использования PreferenceActivity для сохранения предпочтений в файле или это случай создания совершенно новой активности для выполнения этой работы? Если последнее имеет место, есть ли макет, который я могу использовать, чтобы сделать действие похожим на экран обычных настроек? PreferenceActivity использует com.android.internal.R.layout.preference_list_content, но это, похоже, не доступно для приложений для повторного использования.

ответ

4

Есть ли простой повторного использования PreferenceActivity, чтобы сохранить предпочтения в файл, или это дело создания целый новый вид деятельности, чтобы сделать эту работу?

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

Если последнее дело есть макета я могу использовать, что сделает активности выглядеть как обычный экран предпочтения?

Это всего лишь ListView. Это займет у вас лот больше времени для этого, чем просто использовать SharedPreferences.

PreferenceActivity использует com.android.internal.R.layout.preference_list_content , но это не кажется, доступны приложения для повторного использования.

Уверенный, что это. Если у вас установлен SDK, он находится на вашем жестком диске прямо сейчас. Посмотрите в $ANDROID_HOME/platforms/$API/data/res/layout, где $ANDROID_HOME - это где у вас есть SDK, а $API - это некоторый API (например, android-2.1).

+2

Спасибо за указатель на R.layout.preference_list_content. Я пропустил этот каталог. Я пересмотрел свой код со вчерашнего дня и, как это бывает, PreferenceActivity работает отлично. Все, что мне нужно сделать, это прочитать и записать в файл внешних настроек в методах onCreate() и onStop(). По какой-то причине это не сработало для меня прошлой ночью. Должно быть, это был поздний час. – Adrian

+0

:: blink :: Что работает? Круто! Я ожидал, что это будет более болезненно, чем кажется. Приношу свои извинения за дополнительные слова предупреждения. – CommonsWare

1

Вы можете создать функцию, которая экспортирует данные из SharedPreferences в файл.

0

Обычно предпочтения сохраняются в sharedpreferences, когда пользователь нажимает на элемент prefrence. Добавьте свой код, чтобы обновить внешний держатель данных в функции onPreferenceTreeClick().