如何覆盖另一个活动的共享首选项中的整数

时间:2019-04-10 18:42:45

标签: java android android-activity sharedpreferences overwrite

我想做一个计步器,您可以在其中手动更改另一个活动中的步数。如何更改另一个活动中存储在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)。

1 个答案:

答案 0 :(得分:0)

更准确地说“ IDE正在删除”无法应用 ...

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)。要访问编辑器,您必须按照上面的示例进行操作。在共享首选项编辑器中获取一个实例,然后使用修改方法。