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;i if(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);
}
}
}