Отдельные настройки для каждого представления в приложении для Android

У меня есть несколько представлений, которые приходят и уходят во время работы приложения. Я хочу, чтобы у каждого представления были свои личные настройки, которые хранятся в виде тега идентификатора представления. Над ними находятся «Общие настройки», на которые ссылаются вложенные настройки, чтобы получить значения по умолчанию при создании представления.

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


person ahodder    schedule 17.01.2011    source источник
comment
Вы знаете, что у вас может быть несколько файлов общих настроек?   -  person Ray Britton    schedule 18.01.2011


Ответы (3)


это может быть не совсем то, о чем вы просите, но вот что я делаю:

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

static final String EXTRA_PREFERENCES_NAME = "android.intent.extra.PREFERENCES_NAME";
...
Intent intent = new Intent(this, Preferences.class);
intent.putExtra(EXTRA_PREFERENCES_NAME, preferencesName);
startActivity(intent);

затем в моих настройках я получаю имя пользовательских настроек и устанавливаю его следующим образом:

public class Preferences extends PreferenceActivity {
    private String preferencesName = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // get the custom preferences name from the extra data in the intent
    preferencesName = getIntent().getExtras().getString(MainActivity.EXTRA_PREFERENCES_NAME);
    // set the preferences file name
    getPreferenceManager().setSharedPreferencesName(preferencesName);
    // get the default preferences from XML
    addPreferencesFromResource(R.xml.preferences);
}

наконец, в моей основной деятельности я получаю определенные предпочтения, подобные этому:

SharedPreferences preferences = getSharedPreferences(preferencesName, MODE_PRIVATE);
String somePreference = preferences.getString("somePreference", defaultValue);
person bmaupin    schedule 23.06.2011
comment
Хаха спасибо. Я понял это некоторое время назад, используя именно тот метод, который вы здесь. Честно говоря, я забыл, что у меня был этот вопрос, иначе я бы повторно ответил на него. Спасибо хоть. - person ahodder; 24.06.2011

Почему-то я не достоин комментировать, но написать ответ, так что начнём: мне бы очень хотелось узнать, как использовать sharedPreferences с PreferencesActivity вместо DefaultSharedPreferences.

Один из способов, который я могу придумать для достижения этой цели, — это позволить PreferenceActivity сохранить значения в defaultSharedPreferences, а затем прочитать эти значения и сохранить их в sharedPreferences, связанном с именем, которое будет соответствовать типу сохраненных значений.

Но это кажется очень неправильным. Итак, как вы, ребята, это делаете? Или вы сохраняете все свои значения из любых PreferencesActivties в defaultSharedPreferences?

person mephju    schedule 11.02.2011

Вы можете использовать PreferenceManager для достижения цели.

person Ashish    schedule 09.02.2011
comment
Спасибо за ваш пост, но, как и в моем предыдущем комментарии, как мне управлять графическим интерфейсом для настроек? Насколько я знаю, PreferenceActivity работает только для defaultSharedPreferences. - person ahodder; 09.02.2011