Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SharedPreferences对RecyclerView中的整数求和_Java_Android_Sum_Sharedpreferences - Fatal编程技术网

Java 使用SharedPreferences对RecyclerView中的整数求和

Java 使用SharedPreferences对RecyclerView中的整数求和,java,android,sum,sharedpreferences,Java,Android,Sum,Sharedpreferences,我正在尝试创建一个计算时间的应用程序。 我的情况: 我有一个包含很多元素的RecyclerView,每个元素都有不同的time属性 现在,当单击一个元素时,我希望将所有这些属性相加,并在另一个活动中显示最终结果。 所以我要做的是使用SharedPreferences实现这一点,如下所示: private void getTime(int time) { SharedPreferences sharedPreferences = mContext.getSharedPreferen

我正在尝试创建一个计算时间的应用程序。 我的情况: 我有一个包含很多元素的RecyclerView,每个元素都有不同的
time
属性

现在,当单击一个元素时,我希望将所有这些属性相加,并在另一个活动中显示最终结果。 所以我要做的是使用SharedPreferences实现这一点,如下所示:

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();
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();
TimeRetrieve
获取文本视图中显示的总时间,因此,如果是第一次,则默认为0。 在此之后,它应该将检索到的int与刚刚单击并保存在另一个SharedRef:
Time
中的项目的int相加

Time
被发送到文本视图,由
TimeRetrieve


但是他的不起作用。

您使用两种不同的
共享引用来获取和放置数据有什么原因吗?考虑使用这样的东西:

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();
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();

注意对
getDefaultSharedReferences
的调用。这将获得默认的
com.companyname.package.yourapplication
SharedReferences文件,如果要设置和检索该文件中的数据,则应仅使用该文件。您创建多个SharedReferences文件还有其他原因,但我认为这不是您想要做的。您还使用了两个不同的键,这肯定也是问题的一部分。我在上面的代码中更改了它们,以便它们匹配,并且您两次都引用同一个键。

首先,您使用了两个不同的键:
TimeRetrieve
Time
。所以,你不能算出总数。 第二,为什么要使用2
SharedReferences
object?只需要一个。
第三,这里不需要使用
SharedReferences
。您只需对变量中所需的内容求和,然后将其传递给另一个具有额外捆绑包的活动。

您使用SharedReferences作为它的原因是什么?一个局部变量还不够?我试过了,但我对此很笨,而且它已经准备好保存在TextView中了。它不允许
GetDefaultSharedReferences
。java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.content.SharedReferences android.content.Context.GetSharedReferences(java.lang.String,int)”,我不知道为什么它是空的。@BetaReogen您的上下文对象是空的我在五月份尝试过,但我太笨了,我要么得到相同的数字,要么得到0