我是java和android编程的新手。据我所知,findViewById
是对父类和I&#39中定义; M只是好奇为什么findViewById
方法可以在不子类super
的关键字调用
答案 0 :(得分:0)
super
关键字是指SuperClass
(父类)实施,因此当您致电super.findViewById(...)
时,您正在访问SuperClass
方法实施,并且因为您的SubClass
不会覆盖此方法; super.findViewById(...)
和findViewById(...)
相同。
但是如果你覆盖它会产生影响。 这是一个例子:
class MyActivity extends Activity{
void onCreate(....){
View fromParentView = super.findViewById(...);
View fromThisView = findViewById(...);
}
View findViewById(int resId){
throw new IllegalArgumentException();
}
}
这第一个fromParentView
将正常运行,但fromThisView
会抛出异常
请检查https://docs.oracle.com/javase/tutorial/java/IandI/super.html
答案 1 :(得分:-1)
如果不覆盖子类中的findViewById
方法,super
和this
在Activity类的范围内是等效的。
您可以执行this.findViewById()
或ActivityName.this.findViewById()
,但这是多余的,除非在匿名类中(即您应该使用ActivityName.this
,但这不属于问题)
要问的相关问题:为什么setContentView
不需要super
?