【问题标题】:Separate preferences for each view in an Android appAndroid 应用程序中每个视图的单独首选项
【发布时间】:2011-01-17 20:57:25
【问题描述】:

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

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

【问题讨论】:

  • 您知道您可以拥有多个 sharedpreferences 文件吗?

标签: android sharedpreferences android-view android-preferences


【解决方案1】:

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

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

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);

【讨论】:

  • 哈哈,谢谢。不久前,我使用您在这里的确切方法想通了。老实说,我忘记了我有这个问题,否则我会重新回答它。不过还是谢谢。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 感谢您的帖子,但和我之前的评论一样,如何控制 GUI 的偏好设置?据我所知,PreferenceActivity 仅适用于 defaultSharedPreferences。
    猜你喜欢
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 2019-04-30
    • 2012-08-28
    • 1970-01-01
    相关资源
    最近更新 更多