public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
这是一个初学者的问题,但似乎无法理解,我也搜索过,找不到相同的问题。
以下是我的理解:
类MainActivity
正在扩展AppCompatActivity
,因此它可以使用父类的字段和方法。
protected void onCreate(Bundle savedInstanceState) {
是父类中的一个方法,它被覆盖。然后super
关键字用于调用onCreate(..)
方法。
现在我不理解的是setContentView(..)
方法。我认为在java中我们应该使用obj.method
或super.method
或ClassName.method
(如果是静态的)来调用方法。但这里的方法是单独使用的。我只需要一个小的解释或重定向到正确的地方。
谢谢。
答案 0 :(得分:2)
SetContentView是我们在扩展Activity类时继承的方法 从布局资源设置活动内容。资源将膨胀,将所有顶级视图添加到活动中。 Activity使用setContentView(R.layout.main)将xml布局设置为该活动,该活动将实际呈现为您活动的UI。
答案 1 :(得分:1)
答案 2 :(得分:0)
onCreate(Bundle)是初始化活动的地方。最重要的是,在这里,您通常会使用定义UI的布局资源调用setContentView(int),并使用findViewById(int)检索该UI中需要以编程方式进行交互的窗口小部件。
这是设置活动的主视图 看看链接中有很多解释。
答案 3 :(得分:0)
为了便于理解,让我举一个例子
public class BaseActivity extends AppCompatActivity{
//Two methods in super class
public void showProgress() {
//your code
}
public void hideProgress() {
//your code
}
}
这是BaseActivity,它是其他活动的超类
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Direct access to BaseClass Method
showProgress();
}
}
如您所见,您可以直接访问BaseClass方法
如果仍有任何混淆让我知道......
答案 4 :(得分:0)
请检查以上示例;
methodX是代码中setContentView()
方法的副本。
它们都是子类的方法。因此无需使用超级关键字
public class Base {
public void method_pub(){
System.out.println("Method is public");
}
protected void method_pro(){`enter code here
System.out.println("Method is protected");
}
}
public class Que1 extends Base {
public void methodX(){}
@Override
protected void method_pro() {
super.method_pro();
methodX();
}
}