我有这样的问题:
我在主要活动中有Calendar对象:
public static Calendar today = Calendar.getInstance();
在我的第二个活动中,我需要设置几个警报,所以我接下来做了:
for(int i = 0; i < alarmCounter; i++){
Calendar calendar = MainActivity.today;
calendar.set(Calendar.HOUR_OF_DAY, alarmHours.get(i));
calendar.set(Calendar.MINUTE, alarmMinutes.get(i));
calendar.set(Calendar.SECOND, 0);
if (calendar.getTimeInMillis() <= System.currentTimeMillis()) {
calendar.add(Calendar.DAY_OF_YEAR, 7);
}
}
但是,如果条件得到满足且7天被添加到calendar
,则这7天也会添加到MainActivity.today
。为什么会这样?我怎么解决呢?
保存MainActivity.today
的值非常重要,因为我在另一种方法中更改了它的值并且它并不总是等于当前日期。
答案 0 :(得分:1)
这是一个内存指针问题。
calendar
和MainActivity.today
都指向相同的Calendar
。
如果您想将它们分开,可以使用clone()方法:
Calendar calendar = (Calendar)MainActivity.today.clone();
答案 1 :(得分:1)
您错误地使用了引用。你需要的是使一个全新的对象克隆不改变SELECT students_details.class AS Class, count(*) AS NumberOfStudents
FROM students_det INNER JOIN students ON students_details.studentID = students.studentID
ORDER BY Class
GROUP BY Class
的状态。这是它应该是什么样子:
MainActivity.today
免责声明:虽然这不是最好的代码风格,但它有助于解决主题启动者面临的问题。
答案 2 :(得分:0)
这就是引用的工作方式。您基本上是在使用MainActivity的Calendar实例。 所以你不想这样做。像这样使用它
r.db("buckets").table("fs_files").filter({metadata: data})('length')("num").changes({"includeInitial": true}).fold(0, function(acc, change) {
return acc.add(change("new_val").sub(change("old_val").default(0)))
}, {emit: function(prev, change, acc) {
return [acc]
}
}).run(con, function(err, cursor) {
if(!cursor)
return;
cursor.each(function(err, row) {
// here we go
})
});