【问题标题】:Android SharedPreferences not workingAndroid SharedPreferences 不起作用
【发布时间】:2016-10-11 10:09:24
【问题描述】:

我想解决一个很奇怪的问题

在 Nexus 5 上恢复出厂设置后,我有一个在所有测试设备上都运行良好的应用,当它尝试使用代码从 SharedPreferences 获取 int

LEVEL_MAXIMO_ALCANZADO = sp.getInt(SP_NIVEL_JUEGO_MAXIMO, 1);

它给了我一个字符串(但仅在 Nexus 5 中,在其他设备中它给了我 int 但在我的 nexus 5 中导致异常java.lang.String cannot be cast to java.lang.Integer

如果我用代码得到字符串的值

String prueba = sp.getString(SP_NIVEL_JUEGO_MAXIMO, "1");

我得到5t+SNTiVFHA=的值

我不知道为什么只有在恢复出厂设置后才会在 nexus 5 中通过

如果有人可以提供提示以遵循它会很棒,我现在迷路了

代码 - ( ctx 是一个上下文对象)

 public static SharedPreferences sp;
 public static SharedPreferences.Editor editor;

  if(sp == null) sp = ctx.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
  if(editor  == null) editor = sp.edit();

  editor.putInt(SP_DINERO, DINERO);
  editor.commit();

其他信息

我还尝试卸载应用并重新启动设备

我使用了 ObscuredSharedPreferences 一个加密它们的类,在该类中它给了我垫块损坏的异常,然后我切换到 SharedPreferences 但同样的错误

由于我的手机在仅使用 5gb 时显示已满的问题,我进行了恢复出厂设置

所以可能是设备上的内存问题?

【问题讨论】:

  • 您能在保存值的位置以及创建 sp 对象的位置发布代码吗?
  • 你说的问题似乎不可能,所以为了更清楚,你可以发布你保存值的代码以及创建 sp 对象的位置
  • 更新了代码,我也尝试了rebot设备
  • 我添加了更多信息,代码应该没问题,因为它可以在其他设备上运行,并且在恢复出厂设置之前它也可以在 nexus 5 上运行

标签: android sharedpreferences


【解决方案1】:

我刚刚进行了重置(擦除缓存和擦除数据,并从引导加载程序恢复出厂设置)现在它又可以工作了

我认为内存已损坏并且失败了。

【讨论】:

    猜你喜欢
    • 2016-12-03
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多