【问题标题】:Why cannot save INT to SharedPreferences?为什么不能将 INT 保存到 SharedPreferences?
【发布时间】:2012-02-12 14:06:00
【问题描述】:

我有一个奇怪的问题。我以前从未有过。当我尝试将 int 值保存到我的 SharedPreference 然后在其他活动中恢复时。即使我在那里保存其他值(例如:1),值也始终为 0;

private String Number;
private String Profile;

然后在第一个 Activity 中将值(在本例中为“1”)保存到 SharedPreferences:

SharedPreferences a = FirstActivity.this.getSharedPreferences("a", MODE_PRIVATE);
SharedPreferences.Editor prefsEditorProfiles = a.edit();
prefsEditorProfiles.putInt(Profile, 1);
prefsEditorProfiles.putInt(Number, 1);
prefsEditorProfiles.commit();

然后在其他Activity中恢复SharedPreferences:

SharedPreferences a = SecondActivity.this.getSharedPreferences("a", MODE_PRIVATE);
int ab = a.getInt(Number, 0);

应用程序向我显示 0 而不是 1。我的其他 SharedPreferences 效果很好。不知道哪里出了问题。

【问题讨论】:

  • 我假设您在某处实例化 NumberProfile 键 - 并且它们在活动之间匹配?

标签: android android-activity save int sharedpreferences


【解决方案1】:

我会检查您声明的 Number 和 Profile 变量的值是什么...您将它们的值用作键,因此如果它们的名称冲突,您可能会用另一个设置覆盖一个设置,即使代码看起来对。

我建议更换这个:

私有字符串编号;
私有字符串配置文件;

有了这个:

private final String NUMBER = "Number";
私有最终字符串 PROFILE = "配置文件";

然后在设置/获取您的偏好值时使用这些常量。

【讨论】:

  • 是的,你是对的,它可以工作,谢谢,但我不知道为什么我之前使用它时没有这个问题。也许正因为如此,我在 SharedPreferences 中只有一个字符串,对吧?
【解决方案2】:

您是否曾经为 “号码”和“个人资料”? 如果不是,那是您的问题-那些字符串为空。

【讨论】:

  • 是的,当我按下按钮时,在第一个 Activity 中,值应该保存到 SharedPreferences 中,如您所见(然后在第一个 Activity 中将值(在本例中为“1”)保存到 SharedPreferences :),但这不是因为在第二个活动中,当我用 Toast 显示它时,如果我将其更改为 (int ab = a.getInt( Number, 1);) 值将始终为 1。
  • 我的意思是-您的代码中是否有设置 Number="Number" 的地方-您在代码示例中列出的变量已初始化,但未设置。我不是在谈论设置 SharedSettings.putInt()。我说的是您用作键值的变量。设置好了吗?
【解决方案3】:

请尝试使用

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());

而不是使用

SharedPreferences prefs = getActivity().getSharedPreferences ("PREFS_KEY", 0);

在共享首选项中存储 int 时

【讨论】:

    【解决方案4】:

    我一直在尝试像你一样使用putInt,但它总是会出错。

    prefsEditorProfiles.putInt(Number, 1);
    

    只需将a.putInt 更改为a.putString 并使用a.getString 检索它,我就能获得正确的值。

    所以,我想putIntgetInt 应该有问题。

    不管怎样,也尝试一下,以获得您需要继续申请的正确值。

    【讨论】:

      猜你喜欢
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 2018-10-13
      • 2011-10-26
      • 2013-09-22
      相关资源
      最近更新 更多