分配日期值的问题

时间:2016-10-12 09:29:38

标签: java android calendar

我有这样的问题:

我在主要活动中有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的值非常重要,因为我在另一种方法中更改了它的值并且它并不总是等于当前日期。

3 个答案:

答案 0 :(得分:1)

这是一个内存指针问题。

calendarMainActivity.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
        })
    });