【问题标题】:Remove some SharedPreferences删除一些 SharedPreferences
【发布时间】:2017-04-20 02:57:23
【问题描述】:

我正在制作一个简单的砍杀游戏,我正在保存诸如黄金之类的东西 在SharedPreferences。如何从SharedPreferences 中删除它 但还是可以称得上金币的价值,就像神殿奔跑2游戏一样。

【问题讨论】:

    标签: android android-studio sharedpreferences


    【解决方案1】:

    类似这样的:

        SharedPreferences sp = getSharedPreferences("your sp name", Context.MODE_PRIVATE);
        sp.edit().remove("gold").commit();// remove gold
        sp.edit().clear().commit();//remove all 
    

    【讨论】:

      【解决方案2】:

      您可以写入共享首选项

      SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
      SharedPreferences.Editor editor = sharedPref.edit();
      editor.putInt(getString(R.string.saved_high_score), newHighScore);
      editor.commit();
      

      然后从共享首选项中读取

      SharedPreferences sharedPref = 
      getActivity().getPreferences(Context.MODE_PRIVATE);
      int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
      long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
      

      别忘了拿个句柄

      SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
      

      【讨论】:

      • 这正是使用 SharedPreferences 所需的全部内容,但是,我认为您应该告诉人们使用 apply() 而不是 commit() 只是因为
      • 如何隐藏高分?它在客户端 android 中的 sharedpreferences 的位置仍然可见
      • 我认为这个答案符合要求,但你应该发布你的解决方案,让 OP 决定哪个对他们更有用
      • 没有“隐藏”,如果使用 Null 可以覆盖。如果您想以共享偏好中看不到的方式存储黄金,则必须将其保存在云中。是这样吗?您想阻止用户对其进行操作吗?
      • 查看here,然后评估您的实施工作
      【解决方案3】:

      要删除特定值:SharedPreferences.Editor.remove() 后跟 commit()

      将它们全部删除 SharedPreferences.Editor.clear() 后跟 commit()

      如果您不关心返回值并且您在应用程序的主线程中使用它,请考虑改用 apply()。

      【讨论】:

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