4

随着应用程序的运行,我有多个视图来来去去。我希望每个视图都有自己的个人偏好,这些偏好存储为视图的 ID 标签。以上是子首选项引用的“常规首选项”,以在创建视图时获取其默认值。

现在,我将常规首选项设置为默认的 SharedPreferences。但我不知道如何创建新首选项并设置活动 UI,以便用户可以更改它们。它与设置 SharedPreferences 几乎相同吗?

4

3 回答 3

5

这可能不是您所要求的,但这就是我所做的:

在我的主要活动中,当我调用首选项活动时,我将自定义首选项文件的名称作为意图中的额外数据传递给它:

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);
于 2011-06-23T23:33:28.163 回答
0

不知何故,我不值得评论,但要写一个答案,所以我们开始吧:我真的很想知道如何将 sharedPreferences 与 PreferencesActivity 一起使用,而不是 DefaultSharedPreferences。

我能想到的一种方法是让preferenceActivity将值保存到defaultSharedPreferences,然后读出这些值并将它们保存到与名称相关联的sharedPreferences中,该名称与保存的值的类型相匹配。

但这似乎是非常错误的。那么你们是怎么做到的呢?或者您是否将任何 PreferencesActivties 中的所有值保存到 defaultSharedPreferences 中?

于 2011-02-11T08:11:42.990 回答
-2

您可以使用 PreferenceManager 来实现目标。

于 2011-02-09T17:09:47.057 回答