Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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 如何自动更新SharedReferences变量?_Java_Android - Fatal编程技术网

Java 如何自动更新SharedReferences变量?

Java 如何自动更新SharedReferences变量?,java,android,Java,Android,假设我有一个名为floatValue的SharedReferences浮点值。当设备检测到新的一天时,如何将floatValue自动设置为0?比如今天是2/1/17,floatValue的值是1250.23。是否可以将其重置为0,并且我的textView将显示0,这样当用户第二天早上醒来时,他会注意到textView的文本为0 我为这些凹痕感到抱歉。基本上,我将newTodayFloatValue初始化为0,因为我需要将今天的值添加到newTodayFloatValue中。然后我将这个值保存到S

假设我有一个名为floatValue的SharedReferences浮点值。当设备检测到新的一天时,如何将floatValue自动设置为0?比如今天是2/1/17,floatValue的值是1250.23。是否可以将其重置为0,并且我的textView将显示0,这样当用户第二天早上醒来时,他会注意到textView的文本为0

我为这些凹痕感到抱歉。基本上,我将newTodayFloatValue初始化为0,因为我需要将今天的值添加到newTodayFloatValue中。然后我将这个值保存到SharedReferences中!但我希望这可以在日期改变后重新设置

 float newTodayFloatValue = 0;
 tvTodayFloatValue = (TextView)findViewById(R.id.todayfloatValueTextView);
    Intent intent1 = getIntent();
    float todayValueToBeAdded = intent1.getFloatExtra("strValueToBeAdded", 0.0f);
    final SharedPreferences totalTodayfloatValue = getSharedPreferences("totalTodayfloatValue", 0);
    newTodayFloatValue = totalTodayfloatValue.getFloat("totalTodayfloatValue", 0);
    newTodayFloatValue = newTodayFloatValue + todayValueToBeAdded;

    SharedPreferences.Editor editor = totalTodayfloatValue.edit();
    editor.putFloat("totalTodayfloatValue", newTodayFloatValue);
    editor.commit();
    tvTodayFloatValue.setText(String.valueOf(newTodayFloatValue));
有Android“广播”用于此类事件,如时间更改(动作时间更改)或日期更改(动作日期更改) 行动)

进一步阅读,请参阅相应的。您还可以找到如何处理广播的信息。

对于此类事件,有Android“广播”,如时间更改(动作时间更改)或日期更改(动作日期更改) 行动)


进一步阅读,请参阅相应的。您还可以找到如何处理广播的信息。

您可以使用带有操作的广播接收器

“android.intent.action.DATE\u已更改”

无论何时自动更改日期(因为日期实际已更改)或由用户显式更改日期,都将触发该事件

要在应用程序未运行的情况下接收此广播,您需要使用所述的意图过滤器在清单中声明它

    <receiver
        android:name=".DateChangeReceiver"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.DATE_CHANGED" />
        </intent-filter>
    </receiver>

您可以使用带有动作的广播接收器

“android.intent.action.DATE\u已更改”

无论何时自动更改日期(因为日期实际已更改)或由用户显式更改日期,都将触发该事件

要在应用程序未运行的情况下接收此广播,您需要使用所述的意图过滤器在清单中声明它

    <receiver
        android:name=".DateChangeReceiver"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.DATE_CHANGED" />
        </intent-filter>
    </receiver>

我认为有更简单的方法来达到这个效果。我将编写一个方法
getFloatValue(…)
,和
setFloatValue
,在方法
setFloatValue
中,您不仅应该更新
SharedPreferences
中的
floatValue
而且还应该更新
floatValueLastModification

然后在
getFloatValue
中,您应该将
floatValueLastModification
与当前时间进行比较,如果是前一天,则返回0

当然,既然您是这样做的,那么您应该只通过这些方法访问这个
floatValue


我认为阅读和理解这样的代码会容易得多。

我认为有更简单的方法来实现这种效果。我将编写一个方法
getFloatValue(…)
,和
setFloatValue
,在方法
setFloatValue
中,您不仅应该更新
SharedPreferences
中的
floatValue
而且还应该更新
floatValueLastModification

然后在
getFloatValue
中,您应该将
floatValueLastModification
与当前时间进行比较,如果是前一天,则返回0

当然,既然您是这样做的,那么您应该只通过这些方法访问这个
floatValue


我认为阅读和理解这些代码会容易得多。

您是否为此使用服务?不!我在技术上被卡住了,因为我不知道这种情况下的方法是什么!你有什么活动代码,我可以把它们放在那里给你看吗?已经添加了代码!你在用服务吗?不!我在技术上被卡住了,因为我不知道这种情况下的方法是什么!你有什么活动代码,我可以把它们放在那里给你看吗?已经添加了代码!不知怎么的,这对我来说不太合适!我理解您的代码和代码背后的逻辑,但我的textview一直显示前一天的浮点值。现在应该怎么做?你能发布你当前的代码吗?清单、接收者和您阅读共享参考的活动/片段/类?非常感谢!你的评论让我真的去重新查看清单,结果是,正是意图过滤器代码的位置让我的应用程序无法工作!现在问题解决了!很酷,很高兴我能帮上忙。不知怎么的,这对我来说不太合适!我理解您的代码和代码背后的逻辑,但我的textview一直显示前一天的浮点值。现在应该怎么做?你能发布你当前的代码吗?清单、接收者和您阅读共享参考的活动/片段/类?非常感谢!你的评论让我真的去重新查看清单,结果是,正是意图过滤器代码的位置让我的应用程序无法工作!现在问题解决了!很酷,很高兴我能帮上忙。