【问题标题】:How can a PreferenceActivity use a custom preference filePreferenceActivity 如何使用自定义首选项文件
【发布时间】:2011-03-02 15:16:48
【问题描述】:

我第一次尝试偏好是不知道PreferenceActivity。所以现在我有一个应用程序,可以将所有用户首选项存储在一个特定的首选项文件中。

我想迁移到使用 PreferenceActivity,但我也希望我的用户保持他们的偏好。

有没有办法告诉我的 PreferenceActivity 将该特定文件用于所有首选项?

【问题讨论】:

  • 您可以编写一个方法来读取您的旧偏好并将它们保存为常规偏好
  • 我认为迁移是一种解决方案。但是我永远无法摆脱迁移代码?无法确保周围没有我的应用程序的旧版本。

标签: android android-preferences


【解决方案1】:

发布此内容可能为时已晚,但您可以在这里找到一个不错的解决方案

您预先设置默认共享首选项文件的名称,如下所示:

public class MyPreferencesActivity extends PreferenceActivity {
    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

         PreferenceManager prefMgr = getPreferenceManager();
         prefMgr.setSharedPreferencesName("my_preferences");
         prefMgr.setSharedPreferencesMode(MODE_WORLD_READABLE);

         addPreferencesFromResource(R.xml.preferences);
    }
}

我希望这对某人有所帮助。

问候。

【讨论】:

  • 不错的答案(尽管已弃用...)已编辑,因为链接已损坏-并从链接中复制了代码。虽然恕我直言,使用MODE_WORLD_READABLE 是一个错误。
【解决方案2】:

您可以在应用程序的开头阅读所有首选项,然后将它们存储在 Preferences 中使用

Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
e.putBoolean("yourPreference", true);
e.putString("yourOtherPreference", "This is the Value");
...
e.commit();

希望对你有帮助

【讨论】:

  • 我现在实现了这个变体,尽管我最初更喜欢重命名 Andrew 的文件想法。然而,我从来没有发现如何做后者,所以我坚持显而易见。谢谢!
【解决方案3】:

Maaalte 是正确的,您要做的是 onCreate 测试您的自定义文件是否存在,如果存在,请将其重命名为标准共享首选项文件名。

另一种选择是逐一读取您的旧首选项,并在您阅读它们时使用共享首选项 API 添加它们,然后在完成后删除您的旧首选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多