了解Activity中的方法

时间:2017-08-18 09:58:04

标签: java android

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.methodsuper.methodClassName.method(如果是静态的)来调用方法。但这里的方法是单独使用的。我只需要一个小的解释或重定向到正确的地方。

谢谢。

5 个答案:

答案 0 :(得分:2)

SetContentView是我们在扩展Activity类时继承的方法 从布局资源设置活动内容。资源将膨胀,将所有顶级视图添加到活动中。 Activity使用setContentView(R.layout.main)将xml布局设置为该活动,该活动将实际呈现为您活动的UI。

答案 1 :(得分:1)

在这种情况下,java隐式假定对当前对象的引用。

setContentView(...)

相同
this.setContentView(...)

查看this answer类似问题

答案 2 :(得分:0)

这是Android Developer

  

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