Java 使用SharedPreferences对RecyclerView中的整数求和
我正在尝试创建一个计算时间的应用程序。 我的情况: 我有一个包含很多元素的RecyclerView,每个元素都有不同的Java 使用SharedPreferences对RecyclerView中的整数求和,java,android,sum,sharedpreferences,Java,Android,Sum,Sharedpreferences,我正在尝试创建一个计算时间的应用程序。 我的情况: 我有一个包含很多元素的RecyclerView,每个元素都有不同的time属性 现在,当单击一个元素时,我希望将所有这些属性相加,并在另一个活动中显示最终结果。 所以我要做的是使用SharedPreferences实现这一点,如下所示: private void getTime(int time) { SharedPreferences sharedPreferences = mContext.getSharedPreferen
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
。所以,你不能算出总数。
第二,为什么要使用2SharedReferences
object?只需要一个。
第三,这里不需要使用SharedReferences
。您只需对变量中所需的内容求和,然后将其传递给另一个具有额外捆绑包的活动。您使用SharedReferences作为它的原因是什么?一个局部变量还不够?我试过了,但我对此很笨,而且它已经准备好保存在TextView中了。它不允许GetDefaultSharedReferences
。java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.content.SharedReferences android.content.Context.GetSharedReferences(java.lang.String,int)”,我不知道为什么它是空的。@BetaReogen您的上下文对象是空的我在五月份尝试过,但我太笨了,我要么得到相同的数字,要么得到0