2014-02-01 3 views
0

Я кодирую с использованием Xamarin и задаюсь вопросом о настройках приложения.Android-приложение запомнить настройки

Возможно ли применение широкого набора настроек? Я приведу вам пример:

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

В зависимости от элемента, выбранного в ListView, зависит от отображаемого вида карты.

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

Заранее спасибо

+0

Вы должны посмотреть здесь http://forums.xamarin.com/discussion/4758/android-shared-preference – hmartinezd

+0

вы хотите, чтобы пользователь, чтобы установить настройки во время выполнения? Я думаю, что у меня есть лучшее решение. просто дай мне знать. – SMR

ответ

0

Я полагаю, вы знакомы с Java I/O и андроида основных понятий. Так вот я иду:

Для упорством данных в Android, у вас есть два основных решения:

  • базы данных SQLite
  • Файловая система

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

Android документация очень ясно о том, как сохранить файлы: http://developer.android.com/training/basics/data-storage/files.html

Я рекомендую вам создать класс настроек, который содержит атрибут HashMap:

public class Settings implements Parcelable{ 
    public static HashMap<String,String> settings; 

    public static void readSettings(){ 
     //Here you read your settings file and you fill your hashmap 
    } 

    public static void writeSettings(){ 
     //Here you iterate through your hashmap and you write your setting files 
    } 
} 

Каждая деятельность будет иметь доступ к настройкам , поскольку атрибут/методы являются статическими. Настройки также будут синхронизированы с помощью всех видов деятельности (если вы измените настройку в одном действии, все другие действия заметят).

Если вам нужны уточнения, оставьте комментарий ниже.

+0

SharedPreferences является более простым и более подходящим для этого случая. –

+0

Вы абсолютно правы! В этом случае, вероятно, бесполезно и сложнее использовать этот настраиваемый метод для отслеживания настроек. Но в некоторых случаях было бы удобно иметь возможность сериализовывать объекты в файлы настроек. Для SharedPreferences вам нужна внешняя библиотека (GSon).Но, в конце концов, у вас есть самый полезный ответ, я вам это даю! – leblma

+0

Преимущество файлового подхода заключается в том, что код будет работать с кросс-платформой, поэтому вы можете использовать его с версиями приложения iOS и WP8, а также версией Android. Используйте что-то вроде Json.NET или ServiceStack.Text для сериализации объекта в файл (нет необходимости внедрять в него Parcelable или любую другую платформу). – SKall

0

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

Для написания.

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); 
Editor editor = sp.edit(); 
editor.putBoolean("someBoolean", true); 
editor.putString("someString", "string"); 
editor.commit(); 

Для чтения

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); 
boolean someBoolean = sp.getBoolean("someBoolean", false); 
boolean someString = sp.getString("someString", null); 
+0

Могу ли я сохранить объект с помощью SharedPreferences? – Garry

+0

@garry Нет, вы не можете использовать 'SharedPreferences', чтобы хранить только пары« ключ/значение ». – SMR

+0

@ Garry хорошо, вы можете преобразовать объект в строку JSON, а затем сохранить String, хотя это, вероятно, не очень хороший подход. –

Смежные вопросы