Отдельные настройки для каждого представления в приложении для Android - PullRequest
4 голосов
/ 17 января 2011

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

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

Ответы [ 3 ]

5 голосов
/ 24 июня 2011

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

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

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);
0 голосов
/ 11 февраля 2011

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

Один из способов решения этой задачи - позволить preferenceActivity сохранить значения в defaultSharedPreferences, а затем прочитать эти значения и сохранить их в sharedPreferences, связанном с именем, которое будет соответствовать виду сохраненных значений.

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

0 голосов
/ 09 февраля 2011

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

...