【问题标题】:How to overwrite an integer in shared-preferences from another activity如何从另一个活动覆盖共享首选项中的整数
【发布时间】:2019-09-01 07:31:12
【问题描述】:

我想制作一个计步器,您可以在其中手动更改另一个活动中的步数。如何从另一个活动更改存储在 sharedpreferences 中的整数? 原始值放在 main_activity 中的 sharedpreferences 中,而不是我想使用 edit_activity 手动输入覆盖 sharedpreferences 中值的值。

我试图通过使用与 main_activity 中相同的代码以及要放入的其他值来覆盖它。

SharedPreferences.Editor editor = getSharedPreferences("sharedpreft", Context.MODE_PRIVATE).edit();
        int newyesterday = Integer.parseInt(yesterdayinput.getText().toString());
        editor.putInt("stepsyesterday", newyesterday);
        int newdaybeforeyesterday = Integer.parseInt(daybeforeyesterdayinput.getText().toString());
        editor.putInt("stepsdaybeforeyesterday", newdaybeforeyesterday);
        editor.apply();

此代码不会导致错误,但在尝试覆盖这些值时应用会崩溃。

我还发现了另一个类似的问题,这里没有使用编辑器,只使用了 .edit 和 .apply。然而,这似乎不适用于整数。

SharedPreferences sharedprefs = getSharedPreferences("sharedprefs", Activity.MODE_PRIVATE);
        int newtoday = Integer.parseInt(todayinput.getText().toString());
        sharedprefs.edit("stepstoday", newtoday).apply();

此代码导致一个错误,指出无法将 edit() 应用于 (java.lang.String, Int)。

【问题讨论】:

  • 请发布完整的崩溃日志

标签: java android android-activity sharedpreferences overwrite


【解决方案1】:

更准确的说法是“IDE is linting”不能应用...

SharedPreferences sharedprefs = getSharedPreferences("sharedprefs", Context.MODE_PRIVATE);
int newtoday = Integer.parseInt(todayinput.getText().toString());
SharedPreferences.Editor prefEditor = sharedprefs.edit();
prefEditor.putInt("stepstoday", newtoday).apply();

问题是,没有办法.edit(String, int)。要访问编辑器,您必须按照上面的示例进行操作。获取共享首选项编辑器的实例,然后使用修改方法。

【讨论】:

    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2012-09-08
    • 1970-01-01
    相关资源
    最近更新 更多