使用RecyClerview的共享PREFERNCES总结整数



我正在尝试创建一个总结时间的应用程序。我的情况:我有一个带有很多元素的回收瓶,每个元素都有不同的 time属性。

现在,当单击一个元素时,然后另一个元素和另一个元素要求和所有这些属性,最终结果将显示在另一个活动中。因此

private void getTime(int time) {
        SharedPreferences sharedPreferences = mContext.getSharedPreferences("sharedPrefs", MODE_PRIVATE);
        int time0 = sharedPreferences.getInt("TimeRetrieve", 0);
        int sum = time0 + time;


        SharedPreferences sharedPreferences2 = mContext.getSharedPreferences("sharedPrefs", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences2.edit();
        editor.putInt("Time", sum);
        editor.apply();

TimeRetrieve获取了文本视图所显示的总时间,因此,如果它是第一次默认为0。之后,应该总和用刚刚单击的项目的int检索int,然后保存在另一个共享pref中: Time

Time被发送到TextView,在该文本视图中通过TimeRetrieve

将其检索

但他不起作用。

首先,您使用2个不同的键:TimeRetrieveTime。因此,您无法赚钱。其次,为什么使用2个SharedPreferences对象?只需要一个。第三,您无需在此处使用SharedPreferences。您只需要在变量中总结所需的内容,然后将其传递给其他活动。

是否有原因使用两个不同的 SharedPreferences获取数据?考虑使用这样的东西:

private void GetTime(int time) {
        SharedPreferences sharedPreferences = mContext.getDefaultSharedPreferences("sharedPrefs", MODE_PRIVATE);
        int time0 = sharedPreferences.getInt("TimeRetrieve", 0);
        int sum = time0 + time;


        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putInt("TimeRetrieve", sum);
        editor.apply();

请注意呼叫getDefaultSharedPreferences。这将获取默认的com.companyname.package.yourapplication共享Preferences文件,如果您要设置和检索数据,则应仅使用该文件。还有其他原因您会创建多个共享Preferences文件,但我认为这不是您要做的。您还使用两个不同的键,这绝对也是问题的一部分。我在上面的代码中更改了它们,以使它们匹配,并且您两次都引用了相同的密钥。

最新更新