作业帮 > 综合 > 作业

安卓开发timePicker的 MainActivity.this.hour = hour;这句话是什么意思,求详解

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/03 14:01:13
安卓开发timePicker的 MainActivity.this.hour = hour;这句话是什么意思,求详解
timePicker.setOnTimeChangedListener( new OnTimeChangedListener() {
public void onTimeChanged(TimePicker view,int hour,int minute) {
MainActivity.this.hour = hour;
MainActivity.this.minute= minute;
showDate(year,month,day,hour,minute);
}
});
在timepicker上按一下+或者按一下-,或者直接修改方框里的值,都将timepicker上的第一个方框的值保存到MainActivity的成员变量hour中,第二个方框的值保存到MainActivity的成员变量minute中.
再问: MainActivity.hour或者this.hour,为什么不这样写呢MainActivity.this.hour = hour;这样写的目的是什么呢
再答: 不能用MainActivity.hour,因为MainActivity不是一个实例,而是一个类,而MainActivity.this才是当前MainActiviy类的一个对象,这和C++的this指针差不多。赋值必须对分配了内存空间的对象进行赋值,不能对类赋值的(除非该成员为静态成员)。 不能用this.our ,因为这个this是指new OnTimeChangedListener(){}这个匿名内部类的对象,很显然这个匿名内部类没有成员叫hour的。而MainActivity.this代表的是MainActivity这个类的对象,这个对象有成员叫hour。