问题描述
- MainActivity.this.year的作用是什么?
-
datePicker.init(year,month,day,new DatePicker.OnDateChangedListener(){ @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { //获取year属性,必须是MainActivity.this.year获取,因为监听是内部类 MainActivity.this.month=month; MainActivity.this.day=day; showDate(year,month,day,hour,minute); } });
解决方案
你在MainActivity这个类中有month这个变量,而在onDateChanged方法的参数中也有这个变量,根据就近原则,在onDateChanged写的month变量就是表示onDateChanged方法参数中的变量,一定要表示MainActivity中的month变量,就必须写全名,MainActivity.month或者MainActivity.this.month或者this.month(onDateChanged方法所属的类是MainActivity,因此this在这里就表示MainActivity)。
完整的,这句的意思就是将onDateChanged方法内的month变量值赋给MainActivity类内的month变量
解决方案二:
MainActivity.this表示这个类的上下文对象。
MainActivity.this.xxx表示类中定义的全局变量。
解决方案三:
通过MainActivity.this获取上下文,然后.year调用全局变量中的year来接收局部变量的year的值
解决方案四:
如楼上所说 当前的year
解决方案五:
是不是这个类里有这个变量呀?
解决方案六:
this代表当前类的引用,因为是在匿名内部类里面,如果直接写this,是代表这个匿名内部类的引用(就是实现DateChangedListener的匿名内部类),加上当前类名表示指定类名的当前对象的引用
解决方案七:
[this]是什么?
C#中this的作用是什么
getApplication()、getApplicationContext()、getBaseContext()、MainActivity.this、this、getContext()之间的区别