Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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 分配日历值的问题_Java_Android_Calendar - Fatal编程技术网

Java 分配日历值的问题

Java 分配日历值的问题,java,android,calendar,Java,Android,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)); cale

我有这样的问题:

我在主活动中有日历对象:

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);
            }
}
for(int i=0;iif(calendar.getTimeInMillis()引用就是这样工作的。您基本上是在处理MainActivity的calendar实例。
所以你不想这么做。像这样使用它

Calendar calendar = Calendar.getInstance();
calendar.setTime(MainActivity.today.getTime();

这是内存指针问题

calendar
main活动。今天的
都指向相同的
calendar
istance

如果要将它们分开,可以使用以下方法:


您使用的引用不正确。您需要的是创建一个全新的对象克隆,以不更改
main活动的状态。今天
。它应该是这样的:

import java.util.Calendar;
import java.util.GregorianCalendar;

public class MainActivity {
    private Calendar calendar;

    public MainActivity() {
        this.calendar = new GregorianCalendar();
    }

    public Calendar getToday() {
        return calendar;
    }
}



public class Main {
    public static void main(String[] args) {
        Calendar calendar = (Calendar) new MainActivity().getToday().clone();

        calendar.set(Calendar.HOUR_OF_DAY, 2); //set some dummy values
        calendar.set(Calendar.MINUTE, 2);
        calendar.set(Calendar.SECOND, 0);

        if (calendar.getTimeInMillis() <= System.currentTimeMillis()) {
            calendar.add(Calendar.DAY_OF_YEAR, 7);
        }
    }
}  
import java.util.Calendar;
导入java.util.GregorianCalendar;
公开课活动{
私人日历;
公共活动(){
this.calendar=new gregorianalendar();
}
公历今日{
返回日历;
}
}
公共班机{
公共静态void main(字符串[]args){
日历日历=(日历)新建MainActivity().getToday().clone();
calendar.set(calendar.HOUR\u OF_DAY,2);//设置一些伪值
日历。设置(日历。分钟,2);
calendar.set(calendar.SECOND,0);
if(calendar.getTimeInMillis()
import java.util.Calendar;
import java.util.GregorianCalendar;

public class MainActivity {
    private Calendar calendar;

    public MainActivity() {
        this.calendar = new GregorianCalendar();
    }

    public Calendar getToday() {
        return calendar;
    }
}



public class Main {
    public static void main(String[] args) {
        Calendar calendar = (Calendar) new MainActivity().getToday().clone();

        calendar.set(Calendar.HOUR_OF_DAY, 2); //set some dummy values
        calendar.set(Calendar.MINUTE, 2);
        calendar.set(Calendar.SECOND, 0);

        if (calendar.getTimeInMillis() <= System.currentTimeMillis()) {
            calendar.add(Calendar.DAY_OF_YEAR, 7);
        }
    }
}